Php 如何在多维数组中使用array\u walk\u recursive更改键名
我可以使用array\u walk\u递归函数来修改一些特定的值,如下所示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_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" => []
]
];