json decode 过滤某项数据重复。
如何在json decode时,检索 name 项不重复?然后输出整项的 name 和 id 的值。
JSON树,保存在外部文件里,结构。
C# code
PHP代码
PHP code
考虑过用 array_unique 函数,
PHP code
看来简单的 array_unique 函数不能解决问题,求助大家。
是否把 array_unique 封装到 class 或者function 里使用? 或者用别的缓存数组方法,可以实现我的要求?
求可行的代码。谢谢大家。
JSON树,保存在外部文件里,结构。
C# code
[ {"name":"wang","id":"101"}, {"name":"zhao","id":"201"}, {"name":"zhang","id":"103"}, {"name":"xu","id":"106"}, {"name":"zhou","id":"107"}, {"name":"wang","id":"18"}, //wang已经有过,不输出 {"name":"xu","id":"92"}, //xu已经出现过,跳过输出 {"name":"yi","id":"15"} ]
PHP代码
PHP code
// 一些 curl 分析上面JSON树文件的代码 $json = json_decode($body, true); foreach ($json['data'] as $data) { echo $data['name'].'<br />'; echo $data['id'].'<br />'; }
考虑过用 array_unique 函数,
PHP code
$names = Array(); foreach ($json['data'] as $data) { $names[] = $data['name']; //$id[] = $data['id']; } $names = array_unique($names); // id封装在 array_unique,检索不出重复项了 foreach ($names as $name) { echo $name; // 可以输出所有不重复的 name 值 // echo $id; // $id 没有被封装到 新的foreach里 被无视了 // echo $data['id']; //$data['id']是上一个foreach的产物,永远只输出上一个foreach的最后一项值 }
看来简单的 array_unique 函数不能解决问题,求助大家。
是否把 array_unique 封装到 class 或者function 里使用? 或者用别的缓存数组方法,可以实现我的要求?
求可行的代码。谢谢大家。
作者: changjay 发布时间: 2011-06-13
PHP code
$json = json_decode($body, true); $dict = array(); foreach ($json['data'] as $data) { if(! in_array($name, $dict)) { echo $data['name'].'<br />'; echo $data['id'].'<br />'; $dict[] = $data['name']; } }
作者: xuzuning 发布时间: 2011-06-13
PHP code
$arr = array( array('name' => 'a', 'id' => 1), array('name' => 'a', 'id' => 2), array('name' => 'c', 'id' => 3), array('name' => 'c', 'id' => 4), array('name' => 'e', 'id' => 5), array('name' => 'f', 'id' => 6), ); $json = json_encode($arr); function decode_json($json, $assoc = true){ if(!$json){ return null; } $decode = json_decode($json, $assoc); $return = array(); foreach($decode as $val){ $return[$val['name']] = $val; } return $return; } echo '<pre>';print_r(decode_json($json));
作者: kyzy_yy_pm 发布时间: 2011-06-13
PHP code
$arr = array( array('name' => 'a', 'id' => 1), array('name' => 'a', 'id' => 2), array('name' => 'c', 'id' => 3), array('name' => 'c', 'id' => 4), array('name' => 'e', 'id' => 5), array('name' => 'f', 'id' => 6), ); $json = json_encode($arr); function decode_json($json, $assoc = false){ if(!$json){ return null; } $decode = json_decode($json, $assoc); $return = array(); foreach($decode as $val){ if(is_object($val)){ settype($val, 'array'); } $return[$val['name']] = $val; } unset($decode); return $return; } echo '<pre>';print_r(decode_json($json));
作者: kyzy_yy_pm 发布时间: 2011-06-13