从二维数组中内爆数据

时间:2016-07-25 13:09:11

标签: php arrays multidimensional-array implode

我认为解决起来应该不难,但我无法解决问题。

我正在尝试内爆数组以获得此结果:

$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你帮助我并指出我正确的方向?

4 个答案:

答案 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; });

DEMO link

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

答案 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