Как я могу" удвоить " имплозию вложенного массива?


У меня есть вложенный массив (только один уровень глубиной), как это:

$a = array(
  array( 1, 2, 3 ),
  array( 2, 4, 6 ),
  array( 5, 10, 15 )
  );

И я хотел бы хороший способ имплод() его в эту форму:

1,2,3|2,4,6|5,10,15

Я могу запустить цикл для implode(',',...) каждого массива в $a (хранение этих строк во временном массиве), а затем implode('|',...) этот временный массив, но, похоже, я должен быть в состоянии сделать это более кратко* с PHP.

Заранее спасибо,
Ура!

*под "более лаконично" Я имею в виду, без написания цикла (так, просто используя вызовы функций)

3 5

3 ответа:

Я опаздываю на игру здесь (по таким стандартам), но вы можете буквально "двойной" взрыв.

implode('|', array_map('implode', array_fill(0, count($a), ','), $a))

function implodeComas($arr)
{
    return implode(',',$arr);
}
$out = implode('|', array_map('implodeComas', $a));

echo $out;

Лучше один:

function myImplode($ret,$current)
{
    if($ret)
        $ret .= '|';

    return $ret .= implode(',',$current);
}

echo array_reduce($a, 'myImplode');

Вот действительно грязный способ:

str_replace('],[', '|', trim(json_encode($a), '[]'));