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