使用变量过滤数组并保留结果

时间:2012-08-13 21:30:10

标签: php arrays variables

我有和数组:

Array(
  [9533]=>44
  [6478]=>56
)

我想用变量过滤数组。我试过这个:

function filterArray($value){
    return ($value == $myVar);
}

$filteredArray = array_filter($myArray, 'filterArray');
print_r($filteredArray);

它只是打印:

array()

如果我将变量更改为像44那样的硬数字,那么它会给我我想要的东西。

Array(
  [9533]=>44
)

2 个答案:

答案 0 :(得分:3)

不要使用全局变量,即a bad idea

$myVar = 44; 
$filteredArray = array_filter( $myArray, 
                               function($value) use ($myVar) {
                                   return $value == $myVar;
                               }
                             );

答案 1 :(得分:0)

如果$myVarfilterArray回调函数之外定义,则需要在函数内声明global,然后才能使用它。因此,如果您将filterArray回调更改为此,则应该有效:

function filterArray($value){
    global $myVar;
    return ($value == $myVar);
}

DEMO

尽量避免在不需要时使用global关键字。对于大多数函数,您可以将变量作为参数传递。在您的情况下,global是必要的,因为array_filter不允许使用参数进行回调。