まぁこんなデータを扱う時の話ですが、、、
//-------------------------------------------
{
"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 件のコメント:
コメントを投稿