2016-07-25 4 views
3

Я думаю, что это не должно быть так сложно решить, но я не могу получить решение.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 вы поможете мне и назовите меня в правильном направлении?

+0

Покажите свою попытку с 'array_map()', вы, вероятно, не далеки от решения. – Rizier123

+0

array_map() сделает это за вас –

+0

@ Rizier123 @SunilPachlangia Я обновил свой вопрос с помощью 'array_map()' –

ответ

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

Кроме того, чтобы знать, что array_reduce сделать:

Итеративно уменьшить массив к единственному значению, используя функцию обратного вызова ..see more

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

    ?> 

Вы можете сделать это с петлей Еогеаспа как выше

0

С петлей:

$array = array(
    0 => array(
     'name' => 'John Doe', 
     'email' => '[email protected]' 
    ), 
    1 => array(
     'name' => 'Jane Doe2', 
     'email' => '[email protected]' 
    ), 
); 


//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,[email protected],Jane Doe2,[email protected] 
Смежные вопросы