我有和数组:
Array(
[9533]=>44
[6478]=>56
)
我想用变量过滤数组。我试过这个:
function filterArray($value){
return ($value == $myVar);
}
$filteredArray = array_filter($myArray, 'filterArray');
print_r($filteredArray);
它只是打印:
array()
如果我将变量更改为像44那样的硬数字,那么它会给我我想要的东西。
Array(
[9533]=>44
)
答案 0 :(得分:3)
不要使用全局变量,即a bad idea
$myVar = 44;
$filteredArray = array_filter( $myArray,
function($value) use ($myVar) {
return $value == $myVar;
}
);
答案 1 :(得分:0)
如果$myVar
在filterArray
回调函数之外定义,则需要在函数内声明global
,然后才能使用它。因此,如果您将filterArray
回调更改为此,则应该有效:
function filterArray($value){
global $myVar;
return ($value == $myVar);
}
尽量避免在不需要时使用global
关键字。对于大多数函数,您可以将变量作为参数传递。在您的情况下,global
是必要的,因为array_filter
不允许使用参数进行回调。