我认为它应该不那么难解决,但我无法获得解决方案。
我正试图内爆一个数组,以便得到这样的结果:
$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
,但暂时没有结果。
你能帮我指一下正确的方向吗?
您必须将内部数组合并为一个(如果我们的多维数组称为$list
),我们可以:
$merged = array_reduce($list, 'array_merge', array());
现在你可以很容易地将其内爆:
$string = implode(', ', $merged);
回显给定字符串将打印:
755646648260257261271764。。。
要知道你不能内爆多维数组,因为它的元素本身就是数组,所以可能会出现array to string conversion
错误,因此我们应该使我们的数组变平,为此,你也可以检查如何使多维数组变平?。
还要知道array_reduce
的作用是:
使用回调函数反复将数组缩减为单个值。。查看更多
使用array_walk_recursive
函数的简单解决方案:
// $arr is your initial array
$new_arr = [];
array_walk_recursive($arr, function($v) use(&$new_arr){ $new_arr[] = $v; });
DEMO链路
http://php.net/manual/en/function.array-walk-recursive.php
试试这个:
<?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循环来完成
带循环:
$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