Implode дадзеныя з шматмернага масіва

Я пачатковец у 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
        )
)

Я хачу выкарыстоўваць выбухаць() , каб неяк вяртаць радок падзеленых коскамі, які змяшчае значэння tag_name ключ, як гэта.

google, technology

Ці можна дамагчыся гэтага эфекту з названай функцыяй? Калі няма, то калі ласка, прапанаваць альтэрнатыўнае рашэнне.

58

7 адказы

Вельмі проста:

$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'));
132
дададзена
Сыходзіць з> 5,5 ... :)
дададзена аўтар Vishal Kumar Sahu, крыніца
Звярніце ўвагу, што закрыццё падтрымліваецца толькі з PHP 5.3 або вышэй.
дададзена аўтар Léo Lam, крыніца
Рашэнне для> = 5.5.0 ідэальна!
дададзена аўтар Key-Six, крыніца
join(',', array_map(function (array $tag) { return $tag['tag_name']; }, $array))
8
дададзена

array_map is a call back function, where you can play with the passed array. this should work.

$str = implode(',', array_map(function($el){ return $el['tag_id']; }, $arr));
8
дададзена

вельмі проста пайсці на гэта

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

Хоць гэтае пытанне звязаны з пераўтварэннем радкі, я наткнуўся на гэты час хоча просты спосаб, каб напісаць масівы ў маіх часопісных файлах. Калі вы жадаеце проста інфармацыю, а не клапаціцца пра дакладную чысціні радкі вы можаце разгледзець наступныя пытанні:

json_encode($array)
4
дададзена

If you want "tag_name" with associated "blogTags_id" use: (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
дададзена

У гэтай сітуацыі Implode ($ масіў, ''); Ці будзе працуе, яшчэ таму вы хочаце толькі значэнне. У PHP 5.6 працуе для мяне.

Калі вы хочаце, каб падрываць ключы і значэння ў адным, як:
blogTags_id: 1
tag_name: Google

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

На жаль, я разумею так, яшчэ таму назва «Implode дадзеных з шматмернага масіва». Ну, мой адказ да гэтага часу адказаць на яго нейкім чынам, можа дапамагчы каму-то, так што не будзе выдаляць яго.

0
дададзена