内爆数组值?

qwe*_*rty 10 php loops implode multidimensional-array

所以,我有一个像这样的数组:

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

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

    [2] => Array
        (
            [name] => Something else....
        )
)
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法将值插入字符串,如下所示:

echo implode(', ', $array[index]['name']) // result: Something, Something else, Something else...
Run Code Online (Sandbox Code Playgroud)

使用循环来连接值,如下所示:

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

Rad*_*kel 24

最简单的方法,当内部数组中只有一个项目时:

$values = array_map('array_pop', $array);
$imploded = implode(',', $values);
Run Code Online (Sandbox Code Playgroud)


Ole*_*tei 21

在PHP 5> = 5.5.0

implode(', ', array_column($array, 'name'))
Run Code Online (Sandbox Code Playgroud)


Bol*_*ock 18

你可以使用一个常见的array_map()技巧来"展平"多维数组,然后"展implode()平"结果,但内部PHP仍会在你调用时循环遍历你的数组array_map().

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

echo implode(', ', array_map('get_name', $array));
Run Code Online (Sandbox Code Playgroud)

  • 这最好是使用array_pop().如果您的第二层阵列有额外的密钥,则无法保证"name"密钥将成为堆栈中的第一个.防守编程FTW. (2认同)
  • 另外,如果您对在命名空间中创建新函数持怀疑态度,那么请使用闭包或create_function.echo implode(',',array_map(create_function('$ a','return $ a ["name"];'),$ array)); (2认同)