Php将多维数组转换为单个数组
如何将多维数组转换为单个数组 输入Php将多维数组转换为单个数组,php,arrays,Php,Arrays,如何将多维数组转换为单个数组 输入 [["4|1","4|3","4|6"],[["4|1|2","4|1|8"],["4|3|4","4|3|9"],["4|6|5","4|6|12"]]] 如何将上述输入转换为以下内容? ["4|1","4|3","4|6","4|1|2","4|1|8","4|3|4","4|3|9","4|6|5","4|6|12"] 我知道你想把数组展平到一维。这是一个递归迭代器类,你可以使用 $arr = [["4|1","4|3","4|6"],[["4|1|
[["4|1","4|3","4|6"],[["4|1|2","4|1|8"],["4|3|4","4|3|9"],["4|6|5","4|6|12"]]]
如何将上述输入转换为以下内容?
["4|1","4|3","4|6","4|1|2","4|1|8","4|3|4","4|3|9","4|6|5","4|6|12"]
我知道你想把数组展平到一维。这是一个递归迭代器类,你可以使用
$arr = [["4|1","4|3","4|6"],[["4|1|2","4|1|8"],["4|3|4","4|3|9"],["4|6|5","4|6|12"]]];
$iterator = new \RecursiveIteratorIterator(new \RecursiveArrayIterator($arr));
$result = [];
foreach($iterator as $v) {
$result[] = $v;
}
print_r($result);
-此迭代器允许以与相同的方式在数组和对象上迭代时取消设置和修改值和键。此外,还可以对当前迭代器项进行迭代
解决方案2:-
$arr = [["4|1","4|3","4|6"],[["4|1|2","4|1|8"],["4|3|4","4|3|9"],["4|6|5","4|6|12"]]];
array_walk_recursive($arr, function($v) use(&$result){
$result[] = $v;
});
print_r($result);
Array
(
[0] => 4|1
[1] => 4|3
[2] => 4|6
[3] => 4|1|2
[4] => 4|1|8
[5] => 4|3|4
[6] => 4|3|9
[7] => 4|6|5
[8] => 4|6|12
)
输出:-
$arr = [["4|1","4|3","4|6"],[["4|1|2","4|1|8"],["4|3|4","4|3|9"],["4|6|5","4|6|12"]]];
array_walk_recursive($arr, function($v) use(&$result){
$result[] = $v;
});
print_r($result);
Array
(
[0] => 4|1
[1] => 4|3
[2] => 4|6
[3] => 4|1|2
[4] => 4|1|8
[5] => 4|3|4
[6] => 4|3|9
[7] => 4|6|5
[8] => 4|6|12
)
您可以使用
array\u merge()
有关详细信息:请尝试此解决方案。我使用了几个foreach循环来简化它
<?php
$array = [["4|1","4|3","4|6"],[["4|1|2","4|1|8"],["4|3|4","4|3|9"],["4|6|5","4|6|12"]]];
foreach ($array as $key => $value) {
if($key == 0)
{
foreach ($value as $key => $v) {
$new_array[] = $v;
}
}
else
{
foreach ($value as $key => $s_value) {
foreach ($s_value as $key => $s) {
$new_array[] = $s;
}
}
}
}
print_r($new_array);
?>
这是为您准备的。使用
array\u walk\u recursive
,检查
请给我们看看你试过什么。(使用简单循环而不使用任何花哨的数组函数的方法非常简单,因此您至少应该有一些东西可以展示。)当我尝试您的解决方案类“App\Http\Controllers\RecursiveArrayIterator”时,没有发现您使用的是哪个PHP版本,会出现此错误吗?检查我的解决方案2的更新答案。尝试将\添加到出现该错误的类中。解决方案2正在运行。谢谢:)很乐意提供帮助,欢迎使用堆栈溢出。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。结果为:
array(0=>4 | 1',1=>4 | 3',2=>4 | 6',3=>array(0=>4 | 1 | 2',1=>4 | 1 | 8',4=>array(0=>4 | 3 | 4',1=>4 | 3 | 9',5=>array(0=>4 | 6',12'>
这不是OP想要的。根据上面的输入,您可以执行以下操作:array\u merge(…array\u merge([array\u shift($in)],…$in))代码>但是递归方法就不那么脆弱了。是的,我没有看到您的输入有不同的深层次。很抱歉在这种情况下,最好使用Rahul答案。