【发布时间】:2017-05-09 09:31:40
【问题描述】:
那里
我有一个关于数组操作的问题。
我有一个这样的源数组
array:6 [
0 => array:13 [
"id" => 1
"name" => "companyName"
"code" => "1"
"orderNumber" => 1
"enabled" => true
"createSpace" => false
"description" => "description"
"lft" => 1
"lvl" => 0
"rgt" => 4
"createdAt" => DateTime {#911
+"date": "2017-05-04 01:51:22.000000"
+"timezone_type": 3
+"timezone": "Asia/Shanghai"
}
"updatedAt" => DateTime {#909
+"date": "2017-05-04 01:51:22.000000"
+"timezone_type": 3
+"timezone": "Asia/Shanghai"
}
"children" => array:1 [
0 => array:13 [
"id" => 7
"name" => "departmentName"
"code" => "7"
"orderNumber" => 7
"enabled" => true
"createSpace" => false
"description" => null
"lft" => 2
"lvl" => 1
"rgt" => 3
"createdAt" => DateTime {#914
+"date": "2017-05-09 05:36:55.000000"
+"timezone_type": 3
+"timezone": "Asia/Shanghai"
}
现在我使用 array_map 函数将键名重命名为我的要求,“名称”到“文本”,
PHP 代码在这里
$trees = array_map(function($tree) {
return array(
'id' => $tree['id'],
'text' => $tree['name'],
'children' => $tree['children']
);
}, $trees);
结果是
array:6 [
0 => array:3 [
"id" => 1
"text" => "departmentName"
"children" => array:1 [
0 => array:13 [
"id" => 7
"name" => "departmentName"
"code" => "7"
"orderNumber" => 7
"enabled" => true
"createSpace" => false
"description" => null
"lft" => 2
"lvl" => 1
"rgt" => 3
"createdAt" => DateTime {#914
+"date": "2017-05-09 05:36:55.000000"
+"timezone_type": 3
+"timezone": "Asia/Shanghai"
}
"updatedAt" => DateTime {#903
+"date": "2017-05-09 05:36:55.000000"
+"timezone_type": 3
+"timezone": "Asia/Shanghai"
}
"children" => []
]
]
]
1 => array:3 [
"id" => 2
"text" => "departmentName"
"children" => []
]
2 => array:3 [
"id" => 3
"text" => "departmentName"
"children" => []
]
3 => array:3 [
"id" => 4
"text" => "departmentName"
"children" => []
]
4 => array:3 [
"id" => 5
"text" => "departmentName"
"children" => []
]
5 => array:3 [
"id" => 6
"text" => "departmentName"
"children" => []
]
]
如您所见,它在“children”键中的子数组中不起作用,我怎么能用未知的多维数组更改它。谢谢。
【问题讨论】:
-
展示你的 PHP。听起来你需要
array_walk_recursive -
@Tony Gao 将您的数组格式化为适当的 php 数组
-
您可以使用 foreach() 并应用密钥检查条件然后覆盖密钥
-
@Utkanos 是的,也许你是对的,但我找不到 array_walk_recursive 的解决方案,并更新了 php 代码。
标签: php arrays multidimensional-array key