如何减少此功能的代码

时间:2012-10-11 12:10:01

标签: php reduce

输入数组$items

Array
(
    [0] => Array
        (
            [id] => 2
        )
    [1] => Array
        (
            [id] => 5
        )
)

print_r(foo($items))

的结果
Array
(
    [2] => 1
    [5] => 1
)

功能foo()

function foo($items)
{
    $result = array();
    foreach($items => $array)
    {
        $result[$array['id']] = TRUE;
    }
    return $result;
}

如何使用标准PHP函数编写此数组转换,如array_flip()或其他内容。有可能吗?

2 个答案:

答案 0 :(得分:0)

使用内置的PHP函数只会引入额外函数调用的不必要开销。您所编写的内容已经是从给定输入创建所需输出的有效方法。

如果可能,我建议您使用自定义功能。

答案 1 :(得分:0)

$r = array_combine( 
  array_map(function($i){ return $i['id']; }, $items), // <-- key
  array_fill(0, count($items), true /* or 1 */)        // <-- value
);