数组减少在函数外部分配变量

时间:2015-04-07 11:16:38

标签: php

我想将多维数组展平为单维,因此我使用array_reduce()来完成它。 但是在这个地方敲了一下。

$array = array
            (
                1 => array
                    (
                        0 => 1,
                        1 => 'a'                 
                    ),

                2 => array
                    (
                        0 => 2,
                        1 => 'b'                 
                    )
            )

代码:

$key = 1;   
$array_reduced = array_reduce( $array,function(&$result, $item){    
                        $result[] = $item[$key];
                        return $result;                                 
                        }); 
print_r($array_reduced);    

输出应为:

 Array
 (
     [0] => a

     [1] => b
 )

在此行显示Undefined variable: key $result[] = $item[$key]; 如果我将$item[$key]替换为其工作的$item[1]

如何在$key中使用array_reduce()

2 个答案:

答案 0 :(得分:2)

你的问题很简单,变量$key超出了闭包函数的范围。因此,您可以使用关键字global(这不是最好的)或use()。所以我建议你像这样使用use()

array_reduce($array, function(&$result, $item)use($key){  //<-- See use
    $result[] = $item[$key];
    $key++;  //Don't forget to increment your variable
    return $result;
}); 

答案 1 :(得分:0)

你在寻找这样的东西:

$key = 1;   
$array_reduced = array_reduce( $array,function(&$result, $item){  
                        $key++;
                        $result[] = $item[$key];
                        return $result;                                 
                        }); 
print_r($array_reduced); 

<强>输出:

Array ( [0] => a [1] => b )