PHP - 在数组中获取数组并存储/操作

时间:2015-01-08 14:54:07

标签: php arrays sorting

我在PHP中有一个现有的数组(当我使用print_r时):

Array (
    [0] => Array(
        [value] => 188
        [label] => Lucy
    )  
    [1] => Array (
        [value] => 189
        [label] => Jessica
    ) 
    [2] => Array (
        [value] => 192
        [label] => Lisa
    ) 
    [3] => Array (
        [value] => 167
        [label] => Carol
    ) 
    // and so on...
) 

从这个数组我需要操作或创建一个新的数组,如下所示:

Array (
    [Lucy] => 188
    [Jessica] => 189
    [Lisa] => 192
    [Carol] => 167
) 

最好的方法是什么?

我需要将名称变成键,这样我就可以按字母顺序排序:

uksort($array, 'strnatcasecmp');

3 个答案:

答案 0 :(得分:6)

恕我直言,最好和最简单的选择是:

$newArray = [];
foreach ($array as $var) {
   $newArray[$var['label']] = $var['value'];
}

注意:如果由于[]而无效,请将第一行更改为经典版本:$newArray = array();,因为它是相同的。

答案 1 :(得分:6)

PHP 5.5有一个很好的新array_column()函数可以完全适合你。我想你想要这样的东西:

$result = array_column($array, 'value', 'label');

答案 2 :(得分:0)

您也可以使用array_reduce,如下所示:

$new_array = array_reduce($old_array, function($new_array, $item) {
    $new_array[$item['label']] = $item['value'];
    return $new_array;
}, array());

在简单的情况下,这可能有点过分。在正在进行大量数组转换的应用程序中, array_reduce 的第二个参数可以被排除并根据上下文进行替换。