将php数组转换为单个数组

jhc*_*hen 29 php arrays

我有一个数组,其值是特定格式的所有数组,如下所示:

Array
(
    [0] => Array
           (
               [username] => John
           )    
    [1] => Array
           (
               [username] => Joe
           )
    [2] => Array
           (
               [username] => Jake
           )
)
Run Code Online (Sandbox Code Playgroud)

我想这个:

Array
(
    [0] => John   
    [1] => Joe
    [2] => Jake
)
Run Code Online (Sandbox Code Playgroud)

我可以通过循环手动执行此操作,但有更好的方法吗?如果没有,是否可以对具有公共属性的对象数组执行此操作?

Pet*_*lor 34

从PHP 5.5.0开始,有一个内置函数array_column可以完成这个任务.

  • 如果我的数组没有特定的键,我怎么能使用array_column.它是php中提供的默认密钥 (4认同)
  • 从 PHP 5.6 开始,您可以使用:`$newArray = array_merge(...$oldArray);` (4认同)

Sil*_*ost 30

为什么复杂的事情?

foreach($array as $k=>$v) {
    $new[$k] = $v['username'];
}
Run Code Online (Sandbox Code Playgroud)


xpo*_*ack 12

从 PHP 5.6 开始,您可以使用 splat 运算符。如果数组键是数字,您可以使用:

$newArray = array_merge(...$oldArray);
Run Code Online (Sandbox Code Playgroud)


小智 6

$new_array = array_column($last_array, 'username');
Run Code Online (Sandbox Code Playgroud)


vfs*_*aki 5

对于像我这样的其他读者,如果username每个内部数组的键不同,并且您想将其展平,请使用以下命令:

call_user_func_array('array_merge', $the_array);
Run Code Online (Sandbox Code Playgroud)

请注意,密钥必须不同。像这样:

[
 0 => [
  'a' => 1
 ],
 1 => [
  'b' => 2
 ]
]
Run Code Online (Sandbox Code Playgroud)

运行代码后,你有这个:

[
 'a' => 1,
 'b' => 2,
]
Run Code Online (Sandbox Code Playgroud)