0

I have and array:

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

I want to filter the array with a variable. I have tried this:

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

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

it just prints:

array()

if I change the variable to a hard number like 44, then it will give me what I want.

Array(
  [9533]=>44
)
4

2 回答 2

3

不要使用全局变量,这是个坏主意

$myVar = 44; 
$filteredArray = array_filter( $myArray, 
                               function($value) use ($myVar) {
                                   return $value == $myVar;
                               }
                             );
于 2012-08-13T21:47:01.933 回答
0

如果$myVar是在filterArray回调函数之外定义的,则需要global在函数中声明它才能使用它。因此,如果您将filterArray回调更改为此,那么它应该可以工作:

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

演示

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

于 2012-08-13T21:43:25.690 回答