最简单的方法来内爆()一个二维数组?

2022-08-30 18:51:34

我是PHP的新手,对它的工作原理没有很好的把握。如果我有一个这样的二维数组(由数据库返回):

array(3) {   
    [0]=> array(1) {         
        ["tag_id"]=> string(1) "5" 
    } 
    [1]=> array(1) {         
        ["tag_id"]=> string(1) "3" 
    } 
    [2]=> array(1) {         
        ["tag_id"]=> string(1) "4" 
    } 
}

并想把它变成字符串,最快的方法是什么?我目前有一个令人讨厌的循环,但希望它可以在一行中完成。一个标准给了我.5,3,4foreachimplodeArray,Array,Array


答案 1

这使用array_map修改数组,但可能通过将其转换为 的 1D 数组来变得更好。然后你可以像往常一样使用内爆:tag_id

$arr = array_map(function($el){ return $el['tag_id']; }, $arr);
$str = implode(',', $arr);

如果您不想修改数组,则可以执行以下操作:

$str = implode(',', array_map(function($el){ return $el['tag_id']; }, $arr));

密码键盘演示


答案 2

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

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