从二维数组中实现数据


Implode data from a Two-dimensional array

我认为它应该不那么难解决,但我无法获得解决方案。

我正试图内爆一个数组,以便得到这样的结果:

$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