5

次のような入れ子になった配列 (深さが 1 レベルのみ) があります。

$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 に答える