簡體   English   中英

用變量過濾數組並保留結果

[英]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不允許使用參數進行回調。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM