コールバックに単一の追加引数を渡すにはどうすればよいarray_map
ですか?私の例$smsPattern
では、(の現在の要素の後に、2番目の引数として)クロージャーを使用し$featureNames
て関数に渡したいと思います。array_map
$getLimit
$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));
このコードで私は奇妙な警告を受けています:
警告:array_map()[function.array-map]:引数#3は配列である必要があります。
もちろん、理由は、の$getLimit
ような別の正規表現でクロージャを再利用するためです$smsPattern
。ありがとう。