2013年2月27日水曜日

PHPでJSONデータを扱うとき。

PHPでJSONを扱うときの話ですが、
まぁこんなデータを扱う時の話ですが、、、
 //-------------------------------------------
{
 "doc":{
  "pages":{
   "layers":[
    {
     "items":[
      {
       "name":"abcdefgh",
       。。。。データいろいろ。。。。
       "items":[
        {
         。。理論上無限階層下。。データいろいろ。。。。
うん。
*["items > name == {$tareget}"]
セレクタみたいなやつで一発でかけるならいいんですが、、、まぁそういうクラスを書いてもいいんだけど、、、それほどでもなかったので、なめてみるコードを書いてみました
こんな感じで。
 //-------------------------------------------
 // objectのTREEを下っていって、*['name']=$nameのとき*[$tag]=$valueをセットする件。
 //-------------------------------------------
 public static function searchAndSet(&$json,$name,$tag,$value){
  $ar = array_keys($json);
  $n = count($ar);
  for($w=0;$w<$n;$w++){
   $br = @array_keys( $json[ $ar[$w]  ] );
   if(count($br) > 0){
    $ret = xxxxxxxx::searchAndSet($json[$ar[$w]],$name,$tag,$value);
    if($ret != null) return $ret;
   }
   if($json[ $ar[$w] ]['name'] == $name){
    $json[ $ar[$w] ][$tag] = $value;
    return $value;
   }
  }
  return null;
 }
追記) あ、NAMEが一意なのが前提なコードです。

0 件のコメント:

コメントを投稿