我认为解决起来应该不难,但我无法解决问题。
我正在尝试内爆数组以获得此结果:
$new_array = "755, 646, 648, 260, 257, 261, 271, 764, ..."
这是我的阵列:
Array
(
[0] => Array
(
[0] => 755
[1] => 646
)
[1] => Array
(
[0] => 648
[1] => 260
[2] => 257
[3] => 261
)
[2] => Array
(
[0] => 271
)
[3] => Array
(
[0] => 764
[1] => 643
[2] => 260
[3] => 263
[4] => 756
[5] => 763
[6] => 762
[7] => 259
[8] => 257
[9] => 758
[10] => 261
[11] => 768
[12] => 757
[13] => 647
)
)
我知道如何用一个简单的数组做到这一点:
$newarray = implode(", ", $array);
我知道如何获取密钥(使用array_keys
)
$new_array = implode(", ", array_keys($array));
我已尝试使用array_map
但暂时没有结果。
Coud你帮助我并指出我正确的方向?
答案 0 :(得分:4)
你必须将内部数组合并为一个(如果我们的多维数组被称为$list
),我们可以:
$merged = array_reduce($list, 'array_merge', array());
现在你可以很容易地破坏它:
$string = implode(', ', $merged);
回显给定的字符串将打印:
755,646,648,260,257,261,271,764,......
要知道你不能破坏多维数组,因为它的元素本身是数组,因此可能会出现array to string conversion
错误,因此我们应该使数组变平,为此你也可以检查How to Flatten a Multidimensional Array?。< / p>
还要知道array_reduce
做了什么:
使用回调函数迭代地将数组减少为单个值。see more
答案 1 :(得分:1)
使用array_walk_recursive
函数的简单解决方案:
// $arr is your initial array
$new_arr = [];
array_walk_recursive($arr, function($v) use(&$new_arr){ $new_arr[] = $v; });
答案 2 :(得分:0)
试试这个:
<?php
$array = array
(
array(755,646),
array(648,260,257,261),
array(271),
array(764,643,260,263,756,763,762,259,257,758,261,768,757,647)
);
echo "<pre>";
print_r($array);
foreach ($array as $value) {
$newstring[]=implode(",",$value);
}
echo implode(",",$newstring);
?>
你可以像上面的foreach循环那样做
答案 3 :(得分:0)
使用循环:
$array = array(
0 => array(
'name' => 'John Doe',
'email' => 'john@example.com'
),
1 => array(
'name' => 'Jane Doe2',
'email' => 'jane@example.com2'
),
);
//function to display values
function ImplodeDataValue($array) {
$tosinglearray=array();
for ($i = 0; $i <= count($array)-1; $i++) {
$tosinglearray[]=implode(',',$array[$i]);
}
return implode(',',$tosinglearray);
}
echo ImplodeDataValue($array);
//returns John Doe,john@example.com,Jane Doe2,jane@example.com2