मैं एकल अतिरिक्त तर्क से 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));
इस कोड को मैं एक अजीब चेतावनी हो रही है के साथ:: मेरे उदाहरण में मैं $getLimit
बंद के साथ समारोह array_map
को $smsPattern
पारित करने के लिए (एक दूसरे तर्क के रूप में, $featureNames
में वर्तमान तत्व के बाद) करना चाहते हैं
चेतावनी: array_map() [function.array-map]: तर्क # 3 एक सरणी होना चाहिए।
बेशक डी कारण $getLimit
$smsPattern
जैसी एक नियमित नियमित अभिव्यक्ति के साथ बंद करने का कारण है। धन्यवाद।
क्यों array_walk() का उपयोग नहीं करें स्थिर, तो आप एक अतिरिक्त तर्क –
पास कर सकते हैं आप 'array_filter' का उपयोग कर क्या कर रहे हैं? –
@ EmilVikström शून्य मानों को हटा रहा है। – gremo