将php数组转换为单个数组

时间:2010-02-18 14:53:46

标签: php arrays

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

Array
(
    [0] => Array
           (
               [username] => John
           )    
    [1] => Array
           (
               [username] => Joe
           )
    [2] => Array
           (
               [username] => Jake
           )
)

我希望有这个:

Array
(
    [0] => John   
    [1] => Joe
    [2] => Jake
)

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

11 个答案:

答案 0 :(得分:34)

从PHP 5.5.0开始,有一个内置函数array_column就是这样做的。

答案 1 :(得分:30)

为什么会让事情复杂化?

foreach($array as $k=>$v) {
    $new[$k] = $v['username'];
}

答案 2 :(得分:3)

$new_array = array_column($last_array, 'username');

答案 3 :(得分:3)

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

$newArray = array_merge(...$oldArray);

答案 4 :(得分:2)

如果你使用的是PHP 5.3,你可以使用array_walk_recursive和一个闭包(如果你的PHP版本<5.3),闭包可以用普通函数代替:

function arrayFlatten(array $array) {
    $flatten = array();
    array_walk_recursive($array, function($value) use(&$flatten) {
        $flatten[] = $value;
    });

    return $flatten;
}

$nested = array(
    array('username' => 'John'),
    array('username' => 'Joe'),
    array('username' => 'Jake'),
);

$flattened = arrayFlatten($nested);

var_dump($flattened)

array
  0 => string 'John' (length=4)
  1 => string 'Joe' (length=3)
  2 => string 'Jake' (length=4)

答案 5 :(得分:1)

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

call_user_func_array('array_merge', $the_array);

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

[
 0 => [
  'a' => 1
 ],
 1 => [
  'b' => 2
 ]
]

运行代码后,你有这个:

[
 'a' => 1,
 'b' => 2,
]

答案 6 :(得分:0)

$new = array_map(create_function('$auser', 'return $auser["username"];'), $array);

如果使用对象,您只需将return $auser["username"];更改为return $auser->get_username();

即可

答案 7 :(得分:0)

试试这段代码:

foreach   ($arr as $key => $val)
{
    sort($val );
    $new = array_merge($val, $new);
}
print_r ($new);

答案 8 :(得分:0)

试试这个:

$list=array();
foreach($array as $v) {
    array_push($list, $v['username']);
}

答案 9 :(得分:0)

如果你不在乎钥匙:

$new_array = array();

foreach($array as $v) {

    $new_array[] = $v['username']
}

答案 10 :(得分:0)

对于那些使用composer的人:

  1. 如果&lt; = php5.5 array_column可以使用
  2. 如果&gt;可以使用php5.5等可用的polyfill,例如https://github.com/symfony/polyfill/tree/master/src/Php55。一旦你composer install symfony/polyfill-php55,你就可以打电话给array_column,就像你的php5.4或更低版本一样。