Làm cách nào để vượt qua một đối số bổ sung bổ sung tới array_map
gọi lại? Trong ví dụ của tôi, tôi muốn vượt qua $smsPattern
(như là một đối số thứ hai, sau khi yếu tố hiện tại $featureNames
) với chức năng array_map
với $getLimit
đóng cửa:Làm thế nào tôi có thể vượt qua một đối số bổ sung duy nhất để array_map gọi lại trong PHP?
$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));
Với mã này tôi nhận được một cảnh báo lạ:
Cảnh báo: array_map() [function.array-map]: Đối số # 3 nên là một mảng.
Lý do di nhiên là để sử dụng lại $getLimit
đóng bằng một biểu thức chính quy khác như $smsPattern
. Cảm ơn.
Tại sao không sử dụng array_walk() trong thay vào đó, bạn có thể vượt qua một đối số bổ sung –
Bạn đang sử dụng 'array_filter' để làm gì? –
@ EmilVikström xóa giá trị null. – gremo