Внушить значения массива? - PullRequest
10 голосов
/ 31 января 2011

Итак, у меня есть такой массив:

Array
(
    [0] => Array
        (
            [name] => Something
        )

    [1] => Array
        (
            [name] => Something else
        )

    [2] => Array
        (
            [name] => Something else....
        )
)

Есть ли простой способ внедрения значений в строку, например:

echo implode(', ', $array[index]['name']) // result: Something, Something else, Something else...

без с использованием цикла для объединения значений, например:

foreach ($array as  $key => $val) {
    $string .= ', ' . $val;
}
$string = substr($string, 0, -2); // Needed to cut of the last ', '

Ответы [ 3 ]

24 голосов
/ 31 января 2011

Самый простой способ, когда у вас есть только один элемент во внутренних массивах:

$values = array_map('array_pop', $array);
$imploded = implode(',', $values);
20 голосов
/ 10 апреля 2015

В PHP 5> = 5.5.0

implode(', ', array_column($array, 'name'))
18 голосов
/ 31 января 2011

Вы можете использовать общий трюк array_map(), чтобы "сгладить" многомерный массив, а затем implode() "сгладить" результат, но внутренне PHP по-прежнему проходит через ваш массив при вызове array_map().

function get_name($i) {
    return $i['name'];
}

echo implode(', ', array_map('get_name', $array));
...