のJSONオブジェクトは、値が一致した場合にjsonオブジェクトを削除しようとしています。私は多くの方法を試みたが、children
ベースのオブジェクトにこだわっている。ここに私のJSONがどのように見えるかです:nestからキー値を見つけるPHPの
[{
"id": "gx14jg",
"split": "",
"slug": "f4-1",
"url": "",
"name": "f4",
"type": "other_type_first-category",
"class": "undefined"
}, {
"id": "bo3m0q",
"split": 2,
"slug": "\/",
"url": "",
"name": "home",
"type": "page",
"class": ""
},
[{
"id": "g3qjsv",
"split": "",
"slug": "demo",
"url": "",
"name": "demo",
"type": "page",
"class": "",
"children": [{
"id": "r318jh",
"url": "",
"slug": "f4-1",
"name": "f4",
"type": "other_type_first-category",
"class": "undefined",
"children": [{
"id": "hztbje",
"url": "",
"slug": "f3",
"name": "f3",
"type": "other_type_first-category",
"class": "undefined"
}]
}]
}],
[{
"id": "r9s608",
"split": "",
"slug": "demo2",
"url": "",
"name": "demo2",
"type": "category",
"class": "undefined",
"children": [{
"id": "dlk12g",
"url": "",
"slug": "asddddddddd",
"name": "asddddddddd",
"type": "category",
"class": "undefined"
}]
}],
[{
"id": "qg6c3p",
"split": 2,
"slug": "motorola",
"url": "",
"name": "Motorola",
"type": "product-category",
"class": "moto",
"children": [{
"id": "rem23f",
"url": "",
"slug": "indian-resturants",
"name": "Indian Resturants",
"type": "Service-category",
"class": "undefined",
"children": [{
"id": "kpwiq0",
"url": "",
"slug": "f4-1",
"name": "f4",
"type": "other_type_first-category",
"class": "undefined"
}]
}]
}]
]
は私が値「F3」と「スラグ」を見つけるとSLUGは、F3キーを保持している同じオブジェクトを削除する必要があります。
これまで私がこれまでに試したことは次のとおりです。 $ navはそのjson配列で、$slug
はf3
です。
public function checkCategorySlugInNavigation($nav, $slug){
$ArrayRemoved = [];
if(is_array($nav)){
foreach($nav as $key=>$navVal){
if($navVal->slug == $slug){
unset($nav[$key]);
}
else{
if(array_key_exists('children', $navVal)){
$navVal = $this->checkCategorySlugInNavigation($navVal, $slug);
}
$ArrayRemoved[] = $navVal;
}
}
} else{
if($nav->slug == $slug){
unset($nav[$key]);
} else{
if(array_key_exists('children', $nav)){
$nav = $this->checkCategorySlugInNavigation($nav->children, $slug);
}
$ArrayRemoved[] = $nav;
}
}
return $ArrayRemoved;
}
この場合、任意のサポート的な回答が役立ちます。
期待される成果は次のようになります。
[{
"id": "gx14jg",
"split": "",
"slug": "f4-1",
"url": "",
"name": "f4",
"type": "other_type_first-category",
"class": "undefined"
}, {
"id": "bo3m0q",
"split": 2,
"slug": "\/",
"url": "",
"name": "home",
"type": "page",
"class": ""
},
[{
"id": "g3qjsv",
"split": "",
"slug": "demo",
"url": "",
"name": "demo",
"type": "page",
"class": "",
"children": [{
"id": "r318jh",
"url": "",
"slug": "f4-1",
"name": "f4",
"type": "other_type_first-category",
"class": "undefined"
}]
}],
[{
"id": "r9s608",
"split": "",
"slug": "demo2",
"url": "",
"name": "demo2",
"type": "category",
"class": "undefined",
"children": [{
"id": "dlk12g",
"url": "",
"slug": "asddddddddd",
"name": "asddddddddd",
"type": "category",
"class": "undefined"
}]
}],
[{
"id": "qg6c3p",
"split": 2,
"slug": "motorola",
"url": "",
"name": "Motorola",
"type": "product-category",
"class": "moto",
"children": [{
"id": "rem23f",
"url": "",
"slug": "indian-resturants",
"name": "Indian Resturants",
"type": "Service-category",
"class": "undefined",
"children": [{
"id": "kpwiq0",
"url": "",
"slug": "f4-1",
"name": "f4",
"type": "other_type_first-category",
"class": "undefined"
}]
}]
}]
]
は(事前に)ありがとうございます!
期待される結果は何ですか? – axiac
@axiacが最後に追加されました – user3201500