我有以下数组:
$arr = [
"elem-1" => [ "title" => "1", "desc" = > "" ],
"elem-2" => [ "title" => "2", "desc" = > "" ],
"elem-3" => [ "title" => "3", "desc" = > "" ],
"elem-4" => [ "title" => "4", "desc" = > "" ],
]
首先,我需要将值从[ "title" => "1", "desc" = > "" ]
更改为1
(标题的值)。
我使用array_walk
进行了此操作:
array_walk($arr, function(&$value, $key) {
$value = $value["title"];
});
这将正确替换我的值。现在,我们当前的数组是:
$arr = [
"elem-1" => "1",
"elem-2" => "2",
"elem-3" => "3",
"elem-4" => "4",
]
现在,我需要将该数组的每个元素转换为自己的子数组。我不知道如何在没有for
循环的情况下执行此操作。这是理想的结果:
$arr = [
[ "elem-1" => "1" ],
[ "elem-2" => "2" ],
[ "elem-3" => "3" ],
[ "elem-4" => "4" ],
]
答案 0 :(得分:5)
您可以更改array_walk
回调以产生该数组。
array_walk($arr, function(&$value, $key) {
$value = [$key => $value["title"]];
});
如果需要摆脱字符串键,请通过array_values
运行转换后的数组。
$arr = array_values($arr);
答案 1 :(得分:2)
要提供替代解决方案,您可以使用array_map
<?php
$arr = [
"elem-1" => [ "title" => "1", "desc" => "" ],
"elem-2" => [ "title" => "2", "desc" => "" ],
"elem-3" => [ "title" => "3", "desc" => "" ],
"elem-4" => [ "title" => "4", "desc" => "" ],
];
function convertToArray($key,$elem){
return [$key => $elem['title']];
}
$arr = array_map("convertToArray", array_keys($arr), $arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>
输出
Array
(
[0] => Array
(
[elem-1] => 1
)
[1] => Array
(
[elem-2] => 2
)
[2] => Array
(
[elem-3] => 3
)
[3] => Array
(
[elem-4] => 4
)
)
答案 2 :(得分:0)
您需要使用array_map之类的
$new_arr= array_map(function($key,$val){
return [$key => $val['title']];},array_keys($arr),$arr);