Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implode array values?

So, i've got an array like this:

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

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

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

Is there a simple way of imploding the values into a string, like this:

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

without using a loop to concate the values, like this:

foreach ($array as  $key => $val) {
    $string .= ', ' . $val;
}
$string = substr($string, 0, -2); // Needed to cut of the last ', '
like image 505
qwerty Avatar asked Jan 31 '11 18:01

qwerty


3 Answers

Simplest way, when you have only one item in inner arrays:

$values = array_map('array_pop', $array);
$imploded = implode(',', $values);

EDIT: It's for version before 5.5.0. If you're above that, see better answer below :)

like image 90
Radek Benkel Avatar answered Oct 01 '22 01:10

Radek Benkel


In PHP 5 >= 5.5.0

implode(', ', array_column($array, 'name'))
like image 21
Oleg Matei Avatar answered Oct 01 '22 03:10

Oleg Matei


You can use a common array_map() trick to "flatten" the multidimensional array then implode() the "flattened" result, but internally PHP still loops through your array when you call array_map().

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

echo implode(', ', array_map('get_name', $array));
like image 42
BoltClock Avatar answered Oct 01 '22 03:10

BoltClock