在PHP中内爆二维数组

时间:2014-11-22 15:11:58

标签: php arrays string implode

我有一个像:

这样的数组
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
        )

    [2] => Array
        (
            [0] => d
            [1] => e
            [2] => f
        )

)

我想将我的数组转换为如下字符串:

$arrtostr = 'a,b,c,d,e,f';

我使用了implode()函数,但看起来它不适用于二维数组。

我该怎么办?

3 个答案:

答案 0 :(得分:4)

或者,您可以首先使用容器,合并内容,最后使用平面容器,然后使用implode()

$letters = array();
foreach ($array as $value) {
    $letters = array_merge($letters, $value);
}

echo implode(', ', $letters);

Sample Output

答案 1 :(得分:1)

鉴于您的主题数组:

$subject = array(
    array('a', 'b'),
    array('c'),
    array('d', 'e', 'f'),
);

两种简单的方法来实现平坦的"数组是:

PHP 5.6.0及更高版本使用splat operator

$flat = array_merge(...$subject);

低于PHP 5.6.0 ,使用call_user_func_array()

$flat = call_user_func_array('array_merge', $subject);

这两个都给出了如下数组:

$flat = array('a', 'b', 'c', 'd', 'e', 'f');

然后获取你的字符串,只是内爆:

$string = implode(',', $flat);

答案 2 :(得分:1)

你要求一个二维数组,这是一个适用于多维数组的函数。

function implode_r($g, $p) {
    return is_array($p) ?
           implode($g, array_map(__FUNCTION__, array_fill(0, count($p), $g), $p)) : 
           $p;
}

我可以像这样展平数组结构:

$multidimensional_array = array(
    'This',
    array(
        'is',
        array(
            'a',
            'test'
        ),
        array(
            'for',
            'multidimensional',
            array(
                'array'
            )
        )
    )
);

echo implode_r(',', $multidimensional_array);

结果是:

This,is,a,test,for, multidimensional,array