首页 > 解决方案 > PHP 将数组元素包装在单独的数组中

问题描述

我有以下数组:

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

标签: phparrays

解决方案


您可以更改array_walk回调以生成该数组。

array_walk($arr, function(&$value, $key) {
    $value = [$key => $value["title"]];
});

array_values如果您需要摆脱字符串键,请运行转换后的数组。

$arr = array_values($arr);

推荐阅读