首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过php数组循环并在指定位置插入key=>value

问通过php数组循环并在指定位置插入key=>value
EN

Stack Overflow用户
提问于 2014-12-03 16:24:39
回答 1查看 69关注 0票数 0

我有一个数组:

代码语言:javascript
复制
[
    {"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

有这种可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-03 20:45:39

只需使用$myArray = json_decode(JSONString)将JSON字符串设置为有效的PHP数组即可。

然后你可以访问你想要的点,比如array_push($myArray,"myValue")

我需要准确的位置,你想要添加哪种类型的价值,给你一个更好的提示.:-)

与工作代码编辑

您必须对您的JSON结构执行递归搜索,以找到您的值并设置所需的值.我给你写了一个简短的php函数.

正如您所看到的,该函数将使用params并将ready数组返回给您,以便进一步使用它.就像下面描述的那样.

使用示例

代码语言:javascript
复制
$myArray = json_decode($myJSON, true);
$myArray = setSelectedForKey($myArray, "6");
echo(json_encode($myArray));

遵循您需要的函数:

代码语言:javascript
复制
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;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27276712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档