2016-07-22 3 views
3

У меня есть такой массив в моей переменной $tag.Упростите многомерный массив на строку

Array 
(
    [0] => Array 
     (
      [tag_name] => tag-1 
     ) 
    [1] => Array 
     (
      [tag_name] => tag-2 
     ) 
    [2] => Array 
     (
      [tag_name] => tag-3 
     ) 
) 

То, что я пытаюсь сделать, это получить все имена тегов и взрывать их в коме затем сделать его значение для поля ввода текста.

Я пробовал для циклов foreach так много разных способов, но с небольшим успехом. Я использую CodeIgniter, если это помогает.

+0

'

+1

' implode (',', array_column ($ tag, 'tag_name')) ;; ' – splash58

ответ

3

Вы можете использовать array_column с последующим join или implode

Попробуйте это:

$string = join(',', array_column($array, 'tag_name')); 

Объяснение:

array_column возвращает значения из одного столбца из входного массива

Для вашего массивавозвращает массив, содержащий значения индекса tag_name, т.е. возвращаемый массив будет:

Array 
(
    [0] => tag-1 
    [1] => tag-2 
    [2] => tag-3 
) 

Соединение с join или implode, вы получаете нужную строку,

//$string = "tag-1,tag-2,tag-3" 
+0

Спасибо. Он работает отлично. – mzcoxfde

+0

Gald помог :) –

+0

@RobinPanta Можете ли вы добавить какое-то объяснение? StackOverflow бесполезен, если люди просто копируют фрагменты кода и ничего не узнают: P, по крайней мере, пусть интересующийся вопросом или другими людьми, которые посещают этот вопрос, знает, как работает этот ответ ... –

2

Простое и очевидное решение может быть:

$res = ""; 
for ($i = 0; $i < count($tag); $i++) { 
    $res .= $tag[$i]["tag_name"] . ","; 
} 
$res = trim($res, ","); //Removing the extra commas 
echo $res; 

Вы в основном итерации по массиву, и каждый элемент, через который вы проходите, y ou добавить его tag_name в строку $res.

2

Использование array_column

$tag = implode(', ', array_column($array, 'tag_name')); 

Использование array_map:

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

Простой один лайнер !!

$array = [ 
    [ 
     "tag_name" => 'tag-1' 
    ], 
    [ 
     "tag_name" => 'tag-2' 
    ], 
    [ 
     "tag_name" => 'tag-3' 
    ], 
]; 

implode(',', array_column($array, 'tag_name')); 
Смежные вопросы