Подтвердить что ты не робот

Имплодировать данные из многомерного массива

Я новичок в 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

Можно ли добиться этого эффекта с помощью указанной функции? Если нет, предложите альтернативное решение.

4b9b3361

Ответ 1

Довольно просто:

$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'));

Ответ 2

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

Ответ 3

array_map - это функция обратного вызова, в которой вы можете играть с переданным массивом. это должно работать.

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

Ответ 4

очень просто пойти для этого

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

Ответ 5

Если вы хотите, чтобы "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)));