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


Filter array with variable and keep results

我有和数组:

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不允许使用参数进行回调。