循环访问php数组并在指定位置插入key =>值

时间:2014-12-03 16:24:40

标签: php arrays

我有这个数组:

[
    {"key": 1, "title": "Animalia", "expanded": true, "folder": true, "children": [
        {"key": 2, "title": "Chordate", "folder": true, "children": [
            {"key": 3, "title": "Mammal", "children": [
                {"key": 4, "title": "Primate", "children": [
                    {"key": 5, "title": "Primate", "children": [
                    ]},
                    {"key": 6, "title": "Carnivora", "children": [
                    ]}
                ]},
                {"key": 7, "title": "Carnivora", "children": [
                    {"key": 8, "title": "Felidae"}
                ]}
            ]}
        ]}
    ]}
]

我想循环通过数组,当“key”等于指定的数字时(假设为5)我想插入一个“selected”:true key => value

有可能吗?

1 个答案:

答案 0 :(得分:1)

使用$ myArray = json_decode(JSONString)将您的JSON字符串设置为有效的PHP数组

然后你可以访问你想要的点array_push($ myArray [0] [“1”],“myValue”)

我需要您想要添加哪种类型的值的确切位置,以便为您提供更好的提示...: - )

使用工作代码编辑

你必须对你的JSON结构进行递归搜索,找到你的值并设置你需要的值......我给你写了一个简短的php函数来做这个技巧......

如你所见,该函数接受params并返回准备好的php数组以供进一步使用...只需将其称为如下所示....

使用示例

$myArray = json_decode($myJSON, true);
$myArray = setSelectedForKey($myArray, "6");
echo(json_encode($myArray));

遵循您需要的功能:

function setSelectedForKey($searchArray, $searchKey) {
        for ($i = 0; $i < count($searchArray); $i++) {
            if ($searchArray[$i]["key"] == $searchKey) {
                $searchArray[$i]["selected"] = true;
            } else {
                if (is_array($searchArray[$i]["children"])) {
                    $searchArray[$i]["children"] = setSelectedForKey($searchArray[$i]["children"], $searchKey);
                }
            }
        }
        return $searchArray;
    }