php - Retrieve Child Objects -
मुझे इस तरह की टिप्पणियों की एक तालिका चाहिए
id | टिप्पणी | Parent_id -------------------------- 1 टेक्स्ट 1 0 2 टेक्स्ट 2 1 3 टेक्स्ट 3 2 4 टेक्स्ट 4 3 5 टेक्स्ट 5 3 6 टेक्स्ट 6 5 < / पूर्व> मैं माता-पिता और बच्चों के पदानुक्रम को प्रदर्शित करने वाली एक सरणी का निर्माण करना चाहता हूं। पेड़ को पीढ़ियों की एक अनिश्चित संख्या वापस जाना चाहिए। मैं नेस्टिंग फोरछिक लूपों का उपयोग नहीं करना चाहता क्योंकि मुझे यकीन नहीं है कि यह कितना गहरा होता है यही कारण है कि मैं यहां हूं, मुझे इस तरह की समस्या के लिए सबसे अच्छा अभ्यास का यकीन नहीं है। मैं सरणी में गहराई भी प्रदर्शित करना चाहता हूं। नीचे एक उदाहरण है यह सचमुच उपर्युक्त तालिका से संबंधित नहीं है, लेकिन उम्मीद है कि मुझे इसकी आवश्यकता के बारे में एक विचार मिल जाएगा।
array ("depth" = & gt; 4 "parent" = & gt; सरणी ("id "= & Gt; 1," टिप्पणी "= & gt;" sometext1 "" child_count "= & gt; 2," children "= & gt; सरणी (0 = & gt; सरणी (" id "= & gt; 2" टिप्पणी "= & gt; "Sometext2", "child_count" = & gt; 0, "children" = & gt; null), 1 = & gt; सरणी ("आईडी" = & gt; 3 "टिप्पणी" = & gt; "sometext3" "child_count" = & gt; 1 = "1" = "gtc" & Gt; सरणी ("आईडी" = & gt; 2 "टिप्पणी" = & gt; "sometext2", "child_count" = & gt; 0, "children" = & gt; null), 1 = & gt; सरणी ("id" = & gt; 2 "टिप्पणी" = & gt; "sometext2", "child_count" = & gt; 1, "children" = & gt; सरणी ("id" = & gt; 2 "टिप्पणी" = & gt; "sometext2", "child_count" = & gt; मैं माता-पिता / बच्चे के बच्चों को वापस लेने के लिए एक एक्सेल स्टेटमेंट का उपयोग करने जा रहा था। यानी null)))))))) P>
$ sql = "चुनें * टिप्पणियों से जहां माता-पिता = $ parent_id "; मैं इस सबके लिए वास्तव में कोड की तलाश नहीं कर रहा हूं, बस एक छद्म कोड समाधान।
इसे आसानी से PHP में किया जा सकता है ... इसके लिए आपको दो arrays और दो जबकि लूप की आवश्यकता होती है यह कोड एक पेड़ को जिस तरह से आप चाहते थे, और अनिर्धारित गहराई और बच्चों की संख्या बनाएंगे।
संदर्भों का उपयोग करके, ये सोचें कि सब कुछ बचा है इस संरचना के साथ एक सरणी $ डेटा : (आईडी, टिप्पणी, पेरेंट_आईडी) जहां parent_id एक आईडी को इंगित करता है। पेड़ के निर्माण के लिए कोड। $ tree = array (); रीसेट ($ डेटा); जबकि (सूची ($ k, $ v) = प्रत्येक ($ डेटा)) यदि (0 == ($ pid = $ v ['parent_id'])) $ tree [$ k] = & amp; $ डेटा [$ k]; और $ डेटा [$ pid] ['बच्चों'] [$ k] = & amp; $ डेटा [$ k]; और गहराई और बच्चे की गिनती उत्पन्न करने के लिए। रीसेट ($ डेटा); जबकि (सूची ($ k, $ v) = प्रत्येक ($ डेटा)) यदि (0! = $ V ['parent_id']) {$ ref = & amp; $ डेटा [$ k]; $ गहराई = 0; करें {यदि ($ गहराई) $ ref = & amp; $ डेटा [$ रेफरी [ 'PARENT_ID']]; $ Dre = & amp; $ रेफरी [ 'गहराई']; यदि (! एसेट ($ dre) || $ dre & lt; = $ गहराई) $ dre = $ depth ++; अगर (प्रेत ($ रेफरी ['बच्चों'])) $ ref ['child_count'] = गणना ($ रेफरी ['बच्चों']); अन्य {$ ref ['child_count'] = 0; $ रेफरी ['बच्चों'] = नल; }} जबकि ($ ref ['parent_id']); } मेरे सारे कोड मक्खी पर लिखा गया है और यहां तक कि परीक्षण भी नहीं किया गया है, इसलिए यदि कोई त्रुटि हो तो कृपया मुझे क्षमा करें !!!!!!!!!!! < / स्ट्राइक> एक इसे भूल जाओ, मैंने कोशिश की, कुछ मुद्दों को तय किया और अब पूरी तरह से काम करता है। नोट
काम करने के लिए इस कोड के लिए, प्रत्येक वस्तु का सूचक इसकी आईडी के बराबर होना चाहिए ।
मैं कोड को आज़माने के लिए इस्तेमाल किया सरणी। $ data = array ('1' = & gt; सरणी ('id' = & Gt; '1', 'टिप्पणी' = & gt; 'a', 'parent_id' = & gt; 0), '2' = & gt; सरणी ('आईडी' = & gt; '2', 'टिप्पणी' = & gt; 'बी', 'पेरेंट_आईड' = & gt; 0), '3' = & gt; सरणी ('आईडी' = & gt; '3', 'टिप्पणी' = & gt; 'c', 'parent_id' = & gt; 1) '4' = & gt; सरणी ('आईडी' = & gt; '4', 'टिप्पणी' = & gt; 'डी', 'पेरेंट_आईड' = & gt; 1), '5' = & gt; सरणी ('आईडी' = & gt ; '5', 'टिप्पणी' = & gt; 'ई', 'पेरेंट_आईड' = & gt; 2), '6' = & gt; सरणी ('आईडी' = & gt; '6', 'टिप्पणी' = & gt; 'f ',' Parent_id '= & gt; 2),' 7 '= & gt; सरणी (' आईडी '= & gt;' 7 ',' टिप्पणी '= & gt;' जी ',' पेरेंट_आईड '= & gt; 5),' 8 '= & Gt; सरणी (' आईडी '= & gt;' 8 ',' टिप्पणी '= & gt;' एच ',' पेरेंट_आईड '= & gt; 7));
Comments
Post a Comment