PHP将数组元素包装在单独的数组中

时间:2018-08-08 20:42:28

标签: php arrays

我有以下数组:

$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" ],
]

3 个答案:

答案 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);