内爆二维数组中的数据

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

回显给定的字符串将打印:

755, 646, 648, 260, 257, 261, 271, 764, ...

要知道你不能内爆多维数组,因为它的元素本身就是数组,所以可能会出现 array to string conversion 错误,因此我们应该使我们的数组平坦,为此你也可以检查 How to Flatten a Multidimensional Array? .

还要知道 array_reduce 做的是:

Iteratively reduce the array to a single value using a callback function.. see more

使用array_walk_recursive函数的简单解决方案:

// $arr is your initial array
$new_arr = [];
array_walk_recursive($arr, function($v) use(&$new_arr){ $new_arr[] = $v; });

DEMO link

http://php.net/manual/en/function.array-walk-recursive.php

try this:

<?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