5

我有一个嵌套数组(只有一层深),如下所示:

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

我想要一个很好的方法来将它 implode() 变成这种形式:

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

我可以对implode(',',...)每个数组运行一个循环$a(将这些字符串存储在一个临时数组中),然后implode('|',...)是那个临时数组,但似乎我应该能够用 PHP 更简洁*地做到这一点。

在此先感谢,
干杯!

*“更简洁”的意思是,不写循环(所以,只使用函数调用)

4

3 回答 3

8

我在这里比赛迟到了(按照 SO 标准),但你可以从字面上“双重”内爆

implode('|', array_map('implode', array_fill(0, count($a), ','), $a))
于 2010-05-21T18:11:53.917 回答
6

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');
于 2010-05-21T13:35:42.327 回答
5

这是一个非常肮脏的方式:

str_replace('],[', '|', trim(json_encode($a), '[]'));
于 2010-05-21T14:22:46.410 回答