2016-02-26 5 views
2

У меня есть этот JSON ответJSON синтаксический PHP вопрос

{"success":true,"results":[{"response":["random1"],"id":"6566","Limit":1},{"response":["random2"],"id":"6563","Limit":1},{"response":["random3"],"id":"6568","Limit":1}]} 

Все, что мне нужно, чтобы извлечь random1, Random2, случайный, 3 из ответа, так что окончательные результаты будут:

  • random1
  • Random2
  • random3

I есть этот скрипт

$jsonData = file_get_contents("json"); 

$json = json_decode($jsonData,true); 

foreach($json["results"][0]["response"] as $data) { 
{ 
    echo json_encode($data); 

} 
} 

Но это будет только извлечь

  • random1

Если изменить [0] в [1] извлечет Random2 и [2] random3 Как я могу получить random1, Random2, random3, ответ сразу? поэтому окончательное эхо будет:

  • random1
  • Random2
  • random3

Спасибо заранее, любая помощь будет оценен по достоинству!

ответ

3

Петля на вашем $json['result'], что вы делаете только принимая первый индекс 0, которые имеют random1 в качестве значения response

$json = '{"success":true,"results":[{"response":["random1"],"id":"6566","Limit":1},{"response":["random2"],"id":"6563","Limit":1},{"response":["random3"],"id":"6568","Limit":1}]}'; 
$json = json_decode($json,true); 

foreach($json["results"] as $data) { 
    echo $data['response'][0]."\n"; 
} 

Попробуйте here


Update

если вы хотите фильтровать, допустим, random1 то делать, как этот

$json = json_decode($json,true); 
$filter = array("random1"); //You can add items to filter 
$result = array(); 
foreach($json["results"] as $data) { 
    if(!in_array($data['response'][0],$filter)) 
     $result[] = $data; 
} 
print_r($result); 

$result будет содержать только random2 & random3

+0

Спасибо так много, это действительно работает! –

+0

@AlexandruVorobchevici проблем нет. рад, я помог. Обязательно принимайте ответы на будущие ссылки и помогайте другим с той же проблемой. – roullie

+0

Есть ли какие-либо изменения, чтобы вставить в него фильтр слов? поэтому я могу отфильтровать некоторые слова, которые я пробовал с if (strpos ($ data, 'random1')!== false), но не будет работать –

0

results является массивом, так что вы получили первый в массиве с помощью этого: $json["results"][0].

Если вы хотите перебрать все значения, это должно быть так:

foreach($json["results"] as $data) { 
    echo json_encode($data['response']); 

} 
0
foreach($json["results"] as $data) { echo json_encode($data['response']);} 
Смежные вопросы