जैसा कि उल्लेख किया गया है , PHP 5.6+ के रूप में आप आसानी से तर्कों की एक सरणी के साथ एक फ़ंक्शन को कॉल करने के लिए ...
टोकन (उर्फ " स्प्लैट ऑपरेटर", वैरेडिक फ़ंक्शन कार्यक्षमता का हिस्सा ) का उपयोग कर सकते हैं (चाहिए!) :
<?php
function variadic($arg1, $arg2)
{
// Do stuff
echo $arg1.' '.$arg2;
}
$array = ['Hello', 'World'];
// 'Splat' the $array in the function call
variadic(...$array);
// 'Hello World'
नोट: सरणी आइटम को उनकी स्थिति में नहीं, सरणी में उनकी स्थिति के तर्क से मैप किया जाता है ।
कार्लोसकार्सी की टिप्पणी के अनुसार , सभी मामलों में अब तक अनपैकिंग का यह तरीका सबसे तेज़ तरीका है । कुछ तुलनाओं में, यह 5 गुना से अधिक तेज है call_user_func_array
।
अलग
क्योंकि मुझे लगता है कि यह वास्तव में उपयोगी है (हालांकि सीधे सवाल से संबंधित नहीं है): आप अपने फ़ंक्शन की परिभाषा में स्पैट ऑपरेटर पैरामीटर को टाइप-हिंट कर सकते हैं ताकि यह सुनिश्चित हो सके कि सभी पारित मूल्य एक विशिष्ट प्रकार से मेल खाते हैं।
(बस याद रखें कि ऐसा करना आपके द्वारा परिभाषित अंतिम पैरामीटर होना चाहिए और यह फ़ंक्शन में दिए गए सभी मापदंडों को बंडल करता है।)
यह सुनिश्चित करने के लिए बहुत अच्छा है कि किसी सरणी में किसी विशिष्ट प्रकार के आइटम हैं:
<?php
// Define the function...
function variadic($var, SomeClass ...$items)
{
// $items will be an array of objects of type `SomeClass`
}
// Then you can call...
variadic('Hello', new SomeClass, new SomeClass);
// or even splat both ways
$items = [
new SomeClass,
new SomeClass,
];
variadic('Hello', ...$items);