我是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)
你问了一个二维数组,这是一个适用于多维数组的函数.
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)
如果只是想像本例那样内爆单个数组“列”,那么最简单的做法是:
implode(",", array_column($array,"tag_id"));
Run Code Online (Sandbox Code Playgroud)