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