2

我有一个这样的数组:

$a = array(
        array(
            'a' => 'x',
            'b' => 'asdasd',
        ),
        array(
            'a' => 'f',
            'b' => '123123qwe',
        ),
);

我期望这样的数组:

$a = array(
        'asdasd',
        '123123qwe',
);

我可以通过迭代和填充一个新数组来转换它,我想知道我是否可以在没有临时变量的情况下在 1 行中做到这一点?

更新:使用 PHP 5.3,感谢 5.5 的建议!

4

2 回答 2

7

如果您使用的是 PHP 5.5,您可以使用array_column()

 $new_array = array_column($a, 'b');

看到它在行动

于 2013-10-08T13:51:59.987 回答
3

老派方法(5.5 之前):

<?php
function simplify($el)
{
    return $el['b'];
}
$a = array(
        array(
            'a' => 'x',
            'b' => 'asdasd',
        ),
        array(
            'a' => 'f',
            'b' => '123123qwe',
        ),
);
$a = array_map('simplify',$a);
echo '<pre>'.print_r($a,true).'</pre>';

5.3 带有匿名函数的方法:

$a = array_map(function($el){return $el['b'];},$a);
echo '<pre>'.print_r($a,true).'</pre>';
于 2013-10-08T13:54:31.317 回答