Тест в некотором json-коде, например [{"a":"1"},{"a":"2"},{"a":"3"},{"b":"2"}]
, I вы хотите использовать json-декодирование, получить данные и сделать судьей, если сначала кивок ==
b
кив или fisrt кивок !=
b
кив. некоторый код здесь.
<?php header("Content-type: text/html; charset=utf-8"); $json = json_decode('[{"a":"1"},{"a":"2"},{"a":"3"},{"b":"2"}]',true); $number=1; foreach($json as $num){ if($num['a']!=$num['b']){ if($num['a']){ echo 'a'.$number.''.$num['a'].'<br />'; } }else{ if($num['a']){ echo 'b'.$number.''.$num['a'].'<br />'; } } $number++; } ?>
Теперь мой результат:
a11 a22 a33
И мне нужно получить результат:
a11 b22 a33
Как вы можете сравнивать несуществующие поля массива?
нет поля $ num ['b'], есть эти поля, его массив [4] (index 0..3)
$num
в первой итерации будет выполнено
array("a"=>1);
поэтому, если вы хотите сравнить с "b":2
вы должны использовать этот шаблон:
$cmpr = array_shift($json); ... if($num != $cmpr)
Array_shift: http://php.net/manual/en/function.array-shift.php
Вы пытаетесь обратиться к переменной b, если b в настоящее время не определено. вы должны сначала выполнить цикл и найти переменную b. http://codepad.org/0SnrPp6N
<?php $json = json_decode('[{"a":"1"},{"a":"2"},{"a":"3"},{"b":"2"}]',true); foreach ($json as $var) { if (isset($var['b'])) { $b = $var['b']; break; } } $i=0; foreach ($json as $var) { if (!isset($var['a'])) continue; if ($var['a']!=$b) echo "a".++$i."$var[a]\n"; else echo "b".++$i."$var[a]\n"; }