php json_decode

时间:2011-10-20 18:34:34

标签: php json

在一些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

2 个答案:

答案 0 :(得分:2)

如何比较不存在的数组字段?

没有$ num ['b']字段,有这些字段,其数组[4] (index 0..3)

  • 一个:1
  • 一个:2
  • 一个:3
  • B:2
第一次迭代中的

$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";
}
相关问题