16
如何通過單個附加參數到array_map
回撥?在我的例子,我想有$getLimit
閉合通過$smsPattern
(作爲第二個參數,在$featureNames
當前元素之後)的功能array_map
:如何在PHP中將單個附加參數傳遞給array_map回調?
$features = $usage->getSubscription()->getUser()->getRoles();
// SMS regular expression in the form of ROLE_SEND_SMS_X
$smsPattern = '/^ROLE_SEND_SMS_(?P<l>\d+)$/i';
// Function to get roles names and X from a role name
$getNames = function($r) { return trim($r->getRole()); };
$getLimit = function($name, $pattern) {
if(preg_match($pattern, $name, $m)) return $m['l'];
};
// Get roles names and their limits ignoring null values with array_filter
$featuresNames = array_map($getNames, $features);
$smsLimits = array_filter(array_map($getLimit, $featureNames, $smsPattern));
有了這個代碼我得到一個奇怪的警告:
Warning:array_map()[function.array-map]:參數#3應爲 是一個數組。
當然,原因是重新使用$getLimit
封閉與另一個正則表達式,如$smsPattern
。謝謝。
爲什麼不使用array_walk()in替代,那麼你可以傳遞一個額外的參數 –
你用'array_filter'做什麼? –
@EmilVikström刪除空值。 – gremo