现在有一些json格式的数据,需要找到值为{data}的位置,例: // 情况一 {"Result":{"code":"1","data":"{data}"}} // 情况二 {"code":'1',"list":"{data}"} // 情况三 ....... 有什么好的办法解决的,请教一下。
$s='{"Result":{"code":"1","data":"{data}"}}'; //$s='{"code":1,"list":"{data}"}'; $res = json_decode($s,1); //echo array_search('{data}',$res); function get($res,$key){ foreach($res as $k=>$v){ if(is_array($v)) { return get($v,$key); } else { if($v == $key) { return $k; } } } return null; } echo get($res,'{data}');//data
粗暴的方法是解成数组然后递归查找 $str1 = '{"Result":{"code":"1","data":"{data}"}}'; $arr = json_decode($str1,true); echo findInArray($arr,'{data}'); // $arr["Result"]["data"] // 查找出现位置 function findInArray($arr,$value,&$path='$arr'){ foreach($arr as $key=>$val){ if(is_string($key))$key = '"'.$key.'"'; $newpath = $path.'['.$key.']'; if(is_array($val) && $a = findInArray($val,$value,$newpath)) { return $a; } if($val===$value) return $newpath; } }
是后台返回的数据把,叫后台统一数据啊
粗暴的方法是解成数组然后递归查找