我如何“双重”破坏嵌套数组?

时间:2010-05-21 13:32:07

标签: php arrays implode

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

$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每个数组的循环(将这些字符串存储在temp中),然后implode('|',...)那个临时数组,但看起来我应该能够用PHP更简洁地做到这一点。

提前致谢,
干杯!

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

3 个答案:

答案 0 :(得分:8)

我在这里比赛的时间已经很晚了(按照SO标准),但你可以“双重”内爆

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

答案 1 :(得分: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');

答案 2 :(得分:5)

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

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