I have a nested array (only one level deep) like this:
$a = array(
  array( 1, 2, 3 ),
  array( 2, 4, 6 ),
  array( 5, 10, 15 )
  );
And I'd like a nice way to implode() it to this form:
1,2,3|2,4,6|5,10,15
I can run a loop to implode(',',...) each array in $a (storing those strings in a temp), and then implode('|',...) that temporary array, but it seems like I should be able to do this more concisely* with PHP.
Thanks in advance,
Cheers!
*By "more concisely" I mean, without writing a loop (so, just using function calls)
I'm late to the game here (by SO standards) but you could literally "dual" implode.
implode('|', array_map('implode', array_fill(0, count($a), ','), $a))
                        function implodeComas($arr)
{
    return implode(',',$arr);
}
$out = implode('|', array_map('implodeComas', $a));
echo $out;
Better one:
function myImplode($ret,$current)
{
    if($ret)
        $ret .= '|';
    return $ret .= implode(',',$current);
}
echo array_reduce($a, 'myImplode');
                        Here is a really dirty way:
str_replace('],[', '|', trim(json_encode($a), '[]'));
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With