Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将数组元素包装在单独的数组中_Php_Arrays - Fatal编程技术网

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

PHP将数组元素包装在单独的数组中,php,arrays,Php,Arrays,我有以下数组: $arr = [ "elem-1" => [ "title" => "1", "desc" = > "" ], "elem-2" => [ "title" => "2", "desc" = > "" ], "elem-3" => [ "title" => "3", "desc" = > "" ], "elem-4" => [ "title" => "4", "desc" = >

我有以下数组:

$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 title的值

我使用array_walk实现了这一点:

这将正确替换我的值。我们目前的阵列是:

$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" ],
]
您可以更改数组的回调以生成该数组

array_walk($arr, function(&$value, $key) {
    $value = [$key => $value["title"]];
});
如果需要删除字符串键,请通过数组_值运行转换后的数组

$arr = array_values($arr);
您可以更改数组的回调以生成该数组

array_walk($arr, function(&$value, $key) {
    $value = [$key => $value["title"]];
});
如果需要删除字符串键,请通过数组_值运行转换后的数组

$arr = array_values($arr);

要提供替代解决方案,您可以使用array_map实现所有这一切


要提供替代解决方案,您可以使用array_map实现所有这一切


您需要像使用数组映射一样使用数组映射


您需要像使用数组映射一样使用数组映射



您可以创建一个新数组并将foreach$arr作为$value{$newarray[]=array$value}执行,但我确信有一个内置函数可以做到这一点。我只是不知道为什么不能使用for循环?for循环很简单。因为我已经在使用数组函数,所以我想有这样一个解决方案会很好。你可以创建一个新的数组并将foreach$arr作为$value{$newarray[]=array$value}执行,但我确信有一个内置函数可以做到这一点。我只是不知道为什么不能使用for循环?for循环很简单。因为我已经在使用数组函数了,所以我觉得有这样的解决方案会很好。哇,真聪明!荣誉你这么说真好:哇,真聪明!荣誉你这么说真好:那也很聪明!我想知道你为什么删除它。我打算提出同样的建议作为替代。我意识到我的第一次迭代的输出是错误的,所以最初我只是想删除整个内容,记住你已经提供了一个选定的答案。但这是一个足够简单的修复,所以我恢复了它,只是为了让其他人能够看到替代方法,毕竟这就是我们学习的方式,对吧?这也很聪明!我想知道你为什么删除它。我打算提出同样的建议作为替代。我意识到我的第一次迭代的输出是错误的,所以最初我只是想删除整个内容,记住你已经提供了一个选定的答案。但这是一个足够简单的修复,所以我恢复了它,只是为了让其他人能够看到替代方法,毕竟这就是我们学习的方式,对吗?默认情况下,数组映射不获取密钥。您需要将它们作为另一个数组传入。从Tommyb中查看另一个答案是的,当然。。我忘了添加我在移动sorryarray\u地图上键入的bcoz在默认情况下无法获取密钥。您需要将它们作为另一个数组传入。从Tommyb中查看另一个答案是的,当然。。我忘了添加我在手机上输入的bcoz抱歉
  Array
(
    [0] => Array
        (
            [elem-1] => 1
        )

    [1] => Array
        (
            [elem-2] => 2
        )

    [2] => Array
        (
            [elem-3] => 3
        )

    [3] => Array
        (
            [elem-4] => 4
        )

)
$new_arr= array_map(function($key,$val){
return [$key => $val['title']];},array_keys($arr),$arr);