2013年2月27日水曜日

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

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

0 件のコメント:

コメントを投稿