बहुआयामी PHP सारणियों को डॉट नोटेशन कुंजियों के साथ 2डी सारणियों में बदलें
बहुआयामी PHP सारणियों को डॉट नोटेशन कुंजियों के साथ 2डी सारणियों में समतल करना फायदेमंद हो सकता है विभिन्न परिदृश्य. यह आपको डॉट नोटेशन का उपयोग करके नेस्टेड सरणी मानों तक निर्बाध रूप से पहुंचने की अनुमति देता है, जो कोड पठनीयता और रखरखाव को बढ़ाता है। वह फ़ंक्शन जो इस रूपांतरण को सुंदर ढंग से प्राप्त कर सकता है:
$result = array(); $ritit = new RecursiveIteratorIterator(new RecursiveArrayIterator($myArray)); foreach ($leafValue के रूप में ritit) { $कुंजियाँ = सरणी(); foreach (रेंज(0, $ritit->getDepth()) $depth के रूप में) { $कुंजियाँ[] = $ritit->getSubIterator($गहराई)->कुंजी(); } $परिणाम[जुड़ें('.', $कुंजियाँ)] = $leafValue; }
स्पष्टीकरण:
$result = array();
$ritit = new RecursiveIteratorIterator(new RecursiveArrayIterator($myArray));
foreach ($ritit as $leafValue) {
$keys = array();
foreach (range(0, $ritit->getDepth()) as $depth) {
$keys[] = $ritit->getSubIterator($depth)->key();
}
$result[join('.', $keys)] = $leafValue;
}
RecursiveIteratorIterator और RecursiveArrayIterator कक्षाओं का उपयोग नेस्टेड सरणी के माध्यम से पुनरावर्ती रूप से पुनरावृत्त करने के लिए किया जाता है। वर्तमान कुंजी को कैप्चर करने के लिए RecursiveArrayIterator की कुंजी विधि का उपयोग किया जाता है सरणी का।getSubIterator($depth) विधि का उपयोग एक विशिष्ट गहराई पर उप-पुनरावर्तक को पुनः प्राप्त करने के लिए किया जाता है, जो हमें नेस्टेड सरणियों के माध्यम से पुनरावृत्त करने की अनुमति देता है।
सीमा(0, $ ritit->getDepth()) फ़ंक्शन गहराई की एक सरणी बनाता है, जो सबसे भीतरी सरणी से सबसे बाहरी सरणी तक जाती है।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3