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