आपको कब, और कब नहीं करना चाहिए, wp_list_pluck () का उपयोग करें?


10

मेटाडाटा आलसी-लोडिंग के बारे में जानने के दौरान, मुझे कोड की ये पंक्तियाँ मिलीं :

// Don't use `wp_list_pluck()` to avoid by-reference manipulation.
$comment_ids = array();
if ( is_array( $comments ) ) {
    foreach ( $comments as $comment ) {
        if ( $comment instanceof WP_Comment ) {
            $comment_ids[] = $comment->comment_ID;
        }
    }
} 

मैंने सोचा कि यह इस विषय से संबंधित है, लेकिन यहां कोई संदर्भ नहीं है और केवल foreachलूप को एक फ़ंक्शन के अंदर लपेटा गया है, इस मामले में उप-संदर्भ हेरफेर कैसे हो सकता है?

और, सर्वोत्तम अभ्यास के लिए, हमें wp_list_pluck()फ़ंक्शन का उपयोग कब करना चाहिए ?


मैं तुम्हारे साथ हूँ, fwiw। मैंने फ़ंक्शन स्रोत, कोडेक्स और देव डॉक्स को देखा है और यह नहीं देख सकता कि टिप्पणी क्या संदर्भित करती है।
एंडी मैकाले-ब्रुक

जवाबों:


3

किसी भी foreachलूप में, लूप खत्म होने के बाद ऐरे के अंतिम मान पर रहता है foreach। यही कारण है कि एक को वास्तव में हमेशा उस मूल्य को परेशान करना चाहिए जो foreachलूप के बाद किया जाता है।

wp_list_pluck()यह भी सिर्फ एक बुनियादी foreachलूप है अगर $index_keyपारित नहीं हुआ है। साथ ही, किसी भी foreachलूप के साथ , लूप के अंत के बाद ऐरे का अंतिम मान रहता है foreach, और मुझे लगता है कि यह वही है जो कोड कोड में संदर्भित करता है।

हालाँकि, यह धारणा गलत है। कार्य स्वयं कोड के टुकड़े होते हैं, और ग्लोबल्स को छोड़कर, किसी फ़ंक्शन के अंदर कोड के ये टुकड़े केवल फ़ंक्शन के लिए ही उपयोग करने योग्य होते हैं। wp_list_pluck()अपने किसी भी आंतरिक मूल्यों ( चर ) का वैश्वीकरण नहीं करता है , इसलिए भले ही foreachफ़ंक्शन के अंदर लूप के बाद भी सरणी का अंतिम मूल्य उपलब्ध हो , और परेशान न हों, यह फ़ंक्शन के बाहर किसी भी कोड के लिए उपलब्ध नहीं है, तो आप पास-दर-संदर्भ समस्या नहीं रख सकते हैं जैसा कि कोडेक्स में उस पंक्ति में वर्णित है।

wp_list_pluck()किसी भी साधारण foreachलूप के रूप में उपयोग करने के लिए वैध है । पसंद आप पर निर्भर है। मैं व्यक्तिगत wp_list_pluck()रूप से पसंद करता हूं क्योंकि यह कोड पर सहेजता है, और आपको परेशान चर को याद रखने की आवश्यकता नहीं है जो बाद में डिबगिंग दुःस्वप्न का कारण बन सकता है।

बस एक अंतिम नोट, wp_list_pluck()यह भी array_columnकाम कर सकता है क्योंकि यह उसी तरह काम करता है यदि $index_keyफ़ंक्शन को पास किया जाता है


परेशान या रीसेट?
FUXIA

@toscho AFAIK और जो मैंने सीखा है, unset( $value )एक foreachलूप के बाद , wp_reset_postdata()यदि आप setup_postdata( $post )एक foreachलूप में उपयोग करते हैं , और reset() आंतरिक सूचक को पहले आइटम में वापस सेट करते हैं। यदि मैं गलत हूं, या यदि आपके पास जोड़ने के लिए कुछ और या अलग है, तो आपको एक उत्तर में ऐसा करना चाहिए ताकि हम सभी इससे लाभान्वित हों। IMHO, यह एक ऐसा प्रश्न है जिससे अधिकांश समुदाय लाभान्वित हो सकते हैं, और यदि मैं गलत हूं, तो मुझे सही करें और एक उचित उत्तर दें
पीटर गोयन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.