Как может я “двойной” интегрировать вложенный массив?

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

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

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

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

5
задан Chris Tonkinson 21 May 2010 в 13:32
поделиться

3 ответа

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

implode('|', array_map('implode', array_fill(0, count($a), ','), $a))
8
ответ дан 18 December 2019 в 08:27
поделиться

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');
6
ответ дан 18 December 2019 в 08:27
поделиться

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

str_replace('],[', '|', trim(json_encode($a), '[]'));
5
ответ дан 18 December 2019 в 08:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: