我是PHP的新手,我需要快速解决以下问题,但似乎无法想出一个:
我有一个像这样的多维数组
Array
(
[0] => Array
(
[blogTags_id] => 1
[tag_name] => google
[inserted_on] => 2013-05-22 09:51:34
[inserted_by] => 2
)
[1] => Array
(
[blogTags_id] => 2
[tag_name] => technology
[inserted_on] => 2013-05-22 09:51:34
[inserted_by] => 2
)
)
我想使用implode()
以某种方式返回包含tag_name
键值的逗号分隔字符串,如此。
google, technology
用上述功能可以达到这个效果吗?如果没有,请提出替代解决方案。
答案 0 :(得分:147)
非常简单:
$input = array(
array(
'tag_name' => 'google'
),
array(
'tag_name' => 'technology'
)
);
echo implode(', ', array_map(function ($entry) {
return $entry['tag_name'];
}, $input));
和php v5.5.0中的新内容,array_column
:
echo implode(', ', array_column($input, 'tag_name'));
答案 1 :(得分:8)
join(',', array_map(function (array $tag) { return $tag['tag_name']; }, $array))
答案 2 :(得分:8)
array_map
是一个回调函数,您可以在其中使用传递的数组。
这应该有效。
$str = implode(',', array_map(function($el){ return $el['tag_id']; }, $arr));
答案 3 :(得分:8)
虽然这个问题与字符串转换有关,但我想要一个简单的方法将数组写入我的日志文件时偶然发现了这个问题。如果您只是想要这些信息,并且不关心字符串的确切清洁度,您可以考虑:
json_encode($array)
答案 4 :(得分:5)
非常简单的去吧
$str;
foreach ($arrays as $arr) {
$str .= $arr["tag_name"] . ",";
}
$str = trim($str, ',');//removes the final comma
答案 5 :(得分:2)
如果你想要" tag_name"与关联" blogTags_id"使用:(PHP> 5.5)
$blogDatas = array_column($your_multi_dim_array, 'tag_name', 'blogTags_id');
echo implode(', ', array_map(function ($k, $v) { return "$k: $v"; }, array_keys($blogDatas), array_values($blogDatas)));
答案 6 :(得分:0)
在这种情况下内爆($ array,',');会工作,因为你只想要价值观。在PHP 5.6中为我工作。
如果要将键和值内容压缩为:
blogTags_id:1
tag_name:google
$toImplode=array();
foreach($array as $key => $value) {
$toImplode[]= "$key: $value".'<br>';
}
$imploded=implode('',$toImplode);
抱歉,我理解错了,因为标题&#34;来自多维数组的内爆数据&#34;。好吧,我的答案仍然以某种方式回答,可以帮助某人,所以不会删除它。