वहाँ दीर्घवृत्त (...) PHP टोकन के लिए उपयोग करता है उनमें से एक सरणी पैकिंग और एक सरणी unpacking के रूप में उनमें से । फ़ंक्शन उद्देश्यों के लिए दोनों उद्देश्य लागू होते हैं।
पैक
किसी फ़ंक्शन को परिभाषित करते समय, यदि आपको फ़ंक्शन को प्रदान की जाने वाली चर की एक गतिशील संख्या की आवश्यकता होती है (अर्थात, आपको नहीं पता कि कोड में उस फ़ंक्शन को कितने तर्क प्रदान किए जाएंगे), इलिप्सिस (...) टोकन का उपयोग करें उस फ़ंक्शन को प्रदान किए गए सभी शेष तर्कों को एक सरणी में कैप्चर करें जो फ़ंक्शन ब्लॉक के अंदर पहुंच योग्य है। दीर्घवृत्त (...) द्वारा पकड़े गए गतिशील तर्कों की संख्या शून्य या अधिक हो सकती है।
उदाहरण के लिए :
// function definition
function sum(...$numbers) { // use ellipsis token when defining function
$acc = 0;
foreach ($numbers as $nn) {
$acc += $nn;
}
return $acc;
}
// call the function
echo sum(1, 2, 3, 4); // provide any number of arguments
> 10
// and again...
echo sum(1, 2, 3, 4, 5);
> 15
// and again...
echo sum();
> 0
जब फंक्शन इंस्टेंटेशन में पैकिंग का उपयोग किया जाता है, तो ellipsis (...) शेष सभी तर्कों को कैप्चर करता है , अर्थात, आपके पास अभी भी प्रारंभिक, निश्चित (स्थिति) तर्कों की कोई संख्या हो सकती है:
function sum($first, $second, ...$remaining_numbers) {
$acc = $first + $second;
foreach ($remaining_numbers as $nn) {
$acc += $nn;
}
return $acc;
}
// call the function
echo sum(1, 2); // provide at least two arguments
> 3
// and again...
echo sum(1, 2, 3, 4); // first two are assigned to fixed arguments, the rest get "packed"
> 10
खोलना
किसी फ़ंक्शन को कॉल करते समय वैकल्पिक रूप से, यदि आप उस फ़ंक्शन को प्रदान करने वाले तर्क पहले से एक सरणी में जोड़ दिए जाते हैं, तो उस सरणी को फ़ंक्शन में प्रदान किए गए व्यक्तिगत तर्कों में परिवर्तित करने के लिए ellipsis (...) टोकन का उपयोग करें - प्रत्येक सरणी तत्व संबंधित को सौंपा गया है। फ़ंक्शन डेफिनेशन चर नाम फ़ंक्शन परिभाषा में।
उदाहरण के लिए:
function add($aa, $bb, $cc) {
return $aa + $bb + $cc;
}
$arr = [1, 2, 3];
echo add(...$arr); // use ellipsis token when calling function
> 6
$first = 1;
$arr = [2, 3];
echo add($first, ...$arr); // used with positional arguments
> 6
$first = 1;
$arr = [2, 3, 4, 5]; // array can be "oversized"
echo add($first, ...$arr); // remaining elements are ignored
> 6
सरणी या चर को हेरफेर करने के लिए सरणी फ़ंक्शंस का उपयोग करते समय अनपैकिंग विशेष रूप से उपयोगी है ।
उदाहरण के लिए, array_slice के परिणाम को अनपैक करना :
function echoTwo ($one, $two) {
echo "$one\n$two";
}
$steaks = array('ribeye', 'kc strip', 't-bone', 'sirloin', 'chuck');
// array_slice returns an array, but ellipsis unpacks it into function arguments
echoTwo(...array_slice($steaks, -2)); // return last two elements in array
> sirloin
> chuck