Взорвать данные из многомерного массива
Я новичок в 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
Можно ли добиться этого эффекта с помощью указанной функции? Если нет, то, пожалуйста, предложите альтернативное решение.
7 ответов
Достаточно просто:
$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'));
Хотя этот вопрос связан с преобразованием строк, я наткнулся на это, желая получить простой способ записи массивов в мои файлы журналов. Если вы просто хотите получить информацию, и вам не нужна точная чистота строки, вы можете подумать:
json_encode($array)
array_map
является функцией обратного вызова, где вы можете играть с переданным массивом это должно работать.
$str = implode(',', array_map(function($el){ return $el['tag_id']; }, $arr));
join(',', array_map(function (array $tag) { return $tag['tag_name']; }, $array))
Очень просто пойти на это
$str;
foreach ($arrays as $arr) {
$str .= $arr["tag_name"] . ",";
}
$str = trim($str, ',');//removes the final comma
Если вы хотите использовать "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)));
В этой ситуации взорваться ($array,','); будет работать, потому что вы хотите только значения. В PHP 5.6 у меня работает.
Если вы хотите взорвать ключи и значения в одном, как:
blogTags_id: 1
tag_name: Google
$toImplode=array();
foreach($array as $key => $value) {
$toImplode[]= "$key: $value".'<br>';
}
$imploded=implode('',$toImplode);
Извините, я неправильно понимаю, потому что заголовок "Имплозировать данные из многомерного массива". Ну, мой ответ все же ответь как-нибудь, может кому-то помочь, поэтому не буду его удалять.