内爆()二维数组的最简单方法是什么?

Som*_*ens 19 php arrays

我是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" 
    } 
}
Run Code Online (Sandbox Code Playgroud)

并希望将其变成字符串,5,3,4这将是最快的方式吗?我目前有一个令人讨厌的foreach循环,但希望它可以在一行中完成.一个标准implode给了我Array,Array,Array.

Pau*_*aul 29

这会使用array_map修改你的数组,但可能会把它变成一个1D的数组tag_id.然后你可以像正常一样使用implode:

$arr = array_map(function($el){ return $el['tag_id']; }, $arr);
$str = implode(',', $arr);
Run Code Online (Sandbox Code Playgroud)

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

$str = implode(',', array_map(function($el){ return $el['tag_id']; }, $arr));
Run Code Online (Sandbox Code Playgroud)

键盘演示


Bru*_*Lim 7

你问了一个二维数组,这是一个适用于多维数组的函数.

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

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

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

echo implode_r(',', $multidimensional_array);
Run Code Online (Sandbox Code Playgroud)

结果是:

This,is,a,test,for,multidimensional,array
Run Code Online (Sandbox Code Playgroud)


Sco*_*ery 6

// simplest
$str = implode(',',array_map('implode',$arr));
Run Code Online (Sandbox Code Playgroud)


apo*_*fos 6

如果只是想像本例那样内爆单个数组“列”,那么最简单的做法是:

implode(",", array_column($array,"tag_id")); 
Run Code Online (Sandbox Code Playgroud)