Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在多维数组中使用array\u walk\u recursive更改键名_Php - Fatal编程技术网

Php 如何在多维数组中使用array\u walk\u recursive更改键名

Php 如何在多维数组中使用array\u walk\u recursive更改键名,php,Php,我可以使用array\u walk\u递归函数来修改一些特定的值,如下所示 array_walk_recursive($arr, function (& $item, $key) { if($key === 'name') { $item = 'some value'; } }); 但是我如何修改密钥名称本身,它不适用于$key的引用。请帮帮我 这里是$arr $arr = [ 0 => [ "id" => 1, "na

我可以使用array\u walk\u递归函数来修改一些特定的值,如下所示

array_walk_recursive($arr, function (& $item, $key) {
    if($key === 'name') {
        $item = 'some value';
    }
});
但是我如何修改密钥名称本身,它不适用于$key的引用。请帮帮我

这里是$arr

$arr = [
  0 =>  [
    "id" => 1,
    "name" => "departmentName",
    "code" => "1",
    "orderNumber" => 1,
    "enabled" => true,
    "createSpace" => false,
    "description" => "balabala",
    "lft" => 1,
    "lvl" => 0,
    "rgt" => 4,
    "children" => [
      0 => [
        "id" => 7,
        "name" => "departmentName_ProblemHere",
        "code" => "7",
        "orderNumber" => 7,
        "enabled" => true,
        "createSpace" => false,
        "description" => null,
        "lft" => 2,
        "lvl" => 1,
        "rgt" => 3,
        "children" => []
      ]
    ]
  ],
  1 => [
    "id" => 2,
    "name" => "departmentName",
    "code" => "1",
    "orderNumber" => 2,
    "enabled" => true,
    "createSpace" => false,
    "description" => null,
    "lft" => 1,
    "lvl" => 0,
    "rgt" => 2,
    "children" => []
  ],
  2 => [
    "id" => 3,
    "name" => "departmentName",
    "code" => "1",
    "orderNumber" => 3,
    "enabled" => true,
    "createSpace" => false,
    "description" => null,
    "lft" => 1,
    "lvl" => 0,
    "rgt" => 2,
    "children" => []
  ],
  3 => [
    "id" => 4,
    "name" => "departmentName",
    "code" => "4",
    "orderNumber" => 4,
    "enabled" => true,
    "createSpace" => false,
    "description" => null,
    "lft" => 1,
    "lvl" => 0,
    "rgt" => 2,
    "children" => []
  ],
  4 => [
    "id" => 5,
    "name" => "departmentName",
    "code" => "5",
    "orderNumber" => 1,
    "enabled" => true,
    "createSpace" => false,
    "description" => null,
    "lft" => 1,
    "lvl" => 0,
    "rgt" => 2,
    "children" => []
  ],
  5 => [
    "id" => 6,
    "name" => "departmentName",
    "code" => "6",
    "orderNumber" => 6,
    "enabled" => true,
    "createSpace" => false,
    "description" => null,
    "lft" => 1,
    "lvl" => 0,
    "rgt" => 2,
    "children" => []
  ]
];
甚至可能更深,这是一棵动态的树

预期结果如下,只需将所有“name”键更改为“text”


你不能。取消设置上一个键并添加新的one@AlivetoDie和@u_mulder-但在数组中,递归的
$arr[$key]
可能不存在,因为
$key
可能位于数组的任何深度。try
$item=NULL像这样:-@Justinas是的,你是对的,这实际上是最大的问题。没有返回新数组的解决方案。@TonyGao在您的例子中,
array\u walk\u recursive()
变得非常冗长。需要看看其他的选择。请发布预期结果。也许有人能根据预期的结果提供帮助。
$arr = [
  0 =>  [
    "id" => 1,
    "text" => "departmentName",
    "code" => "1",
    "orderNumber" => 1,
    "enabled" => true,
    "createSpace" => false,
    "description" => "balabala",
    "lft" => 1,
    "lvl" => 0,
    "rgt" => 4,
    "children" => [
      0 => [
        "id" => 7,
        "text" => "departmentName_ProblemHere",
        "code" => "7",
        "orderNumber" => 7,
        "enabled" => true,
        "createSpace" => false,
        "description" => null,
        "lft" => 2,
        "lvl" => 1,
        "rgt" => 3,
        "children" => []
      ]
    ]
  ],
  1 => [
    "id" => 2,
    "text" => "departmentName",
    "code" => "1",
    "orderNumber" => 2,
    "enabled" => true,
    "createSpace" => false,
    "description" => null,
    "lft" => 1,
    "lvl" => 0,
    "rgt" => 2,
    "children" => []
  ],
  2 => [
    "id" => 3,
    "text" => "departmentName",
    "code" => "1",
    "orderNumber" => 3,
    "enabled" => true,
    "createSpace" => false,
    "description" => null,
    "lft" => 1,
    "lvl" => 0,
    "rgt" => 2,
    "children" => []
  ],
  3 => [
    "id" => 4,
    "text" => "departmentName",
    "code" => "4",
    "orderNumber" => 4,
    "enabled" => true,
    "createSpace" => false,
    "description" => null,
    "lft" => 1,
    "lvl" => 0,
    "rgt" => 2,
    "children" => []
  ],
  4 => [
    "id" => 5,
    "text" => "departmentName",
    "code" => "5",
    "orderNumber" => 1,
    "enabled" => true,
    "createSpace" => false,
    "description" => null,
    "lft" => 1,
    "lvl" => 0,
    "rgt" => 2,
    "children" => []
  ],
  5 => [
    "id" => 6,
    "text" => "departmentName",
    "code" => "6",
    "orderNumber" => 6,
    "enabled" => true,
    "createSpace" => false,
    "description" => null,
    "lft" => 1,
    "lvl" => 0,
    "rgt" => 2,
    "children" => []
  ]
];