在一些json代码中测试,比如[{"a":"1"},{"a":"2"},{"a":"3"},{"b":"2"}]
,我想使用json解码,获取数据并做出判断,如果第一个a
点头是==
b
点头或 fisrt a
点头是!=
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
答案 0 :(得分:2)
如何比较不存在的数组字段?
没有$ 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
答案 1 :(得分:2)
当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";
}