我正在嘗試創建一個儀表板,其中包含一些資訊,例如有多少用戶是男性或女性。我已經將組態檔資訊存盤在一個名為“用戶”的多維陣列中。為了計算男性/女性用戶總數,我想使用一個帶有多個引數(陣列、鍵和值)的函式。
我嘗試了以下代碼:
<?
function countArray($array, $key, $value) {
$cnt = count(array_filter($array,function($element) {
return $element[$key]== $value;
}));
echo $cnt;
}
countArray($users, 'gender', '1');
?>
這導致未定義的變數:鍵/值。我究竟做錯了什么?
uj5u.com熱心網友回復:
問題在于 PHP 中的匿名函式無法訪問其自身范圍之外的變數。因此,array_filter()您提供的回呼函式不知道$keyor $value,因此它們是該函式范圍內的未定義變數。要解決此問題,您必須使用use關鍵字(如function() use ($external_variable) {}.
在您的情況下,解決方案如下所示:
<?
function countArray($array, $key, $value) {
$cnt = count(array_filter($array,function($element) use ($key, $value) {
return $element[$key]== $value;
}));
echo $cnt;
}
countArray($users, 'gender', '1');
?>
如果您使用的是 PHP 7.4 或更高版本,您還可以僅使用箭頭函式來允許外部作用域隱式成為函式作用域的一部分:
<?
function countArray($array, $key, $value) {
$cnt = count(array_filter($array,fn($element) => $element[$key]== $value ));
echo $cnt;
}
countArray($users, 'gender', '1');
?>
uj5u.com熱心網友回復:
嘗試
function($element) use ($key, $value) {
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/391617.html
