从多维数组中放大数据


79

我是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

通过上述功能可以实现这种效果吗?如果没有,请提出替代解决方案。

Answers:


183

非常简单:

$input = array(
  array(
    'tag_name' => 'google'
  ),
  array(
    'tag_name' => 'technology'
  )
);

echo implode(', ', array_map(function ($entry) {
  return $entry['tag_name'];
}, $input));

http://3v4l.org/ltBZ0


以及php v5.5.0中的新功能array_column

echo implode(', ', array_column($input, 'tag_name'));

4
请注意,仅PHP 5.3或更高版本支持闭包。
莱奥林

2
> = 5.5.0的解决方案是完美的!
六点六

离开> 5.5 ... :)
Sahu V Kumar

12

尽管此问题与字符串转换有关,但我在偶然发现此问题的同时希望找到一种将数组写入日志文件的简便方法。如果您只想要信息,而不关心字符串的确切清洁度,则可以考虑:

json_encode($array)

我知道这看起来像是一种hack,但是却像一个魅力(此处为PHP 5.4)。;)
Paulo Bueno

1
@PauloBueno在2020年你真的,真的不应该使用PPH 5.4!
马丁

9

array_map是一个回调函数,您可以在其中处理传递的数组。这应该工作。

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

8
join(',', array_map(function (array $tag) { return $tag['tag_name']; }, $array))

5

很简单的去

$str;
foreach ($arrays as $arr) {
$str .= $arr["tag_name"] . ",";
}
$str = trim($str, ',');//removes the final comma 

3

如果要使“ 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)));

1

在这种情况下爆破($ array,','); 将起作用,因为只需要这些值。在PHP 5.6中为我工作。

如果您希望将键和值内
插到一个类似项中: blogTags_id:1 tag_name
:google

$toImplode=array();
foreach($array as $key => $value) {
$toImplode[]= "$key: $value".'<br>';
}
$imploded=implode('',$toImplode);

抱歉,我理解错了,因为标题为“从多维数组中放大数据”。好吧,我的答案仍会以某种方式回答它,可能会对某人有所帮助,因此不会删除它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.