php - use array variable outside for loop -


मेरे पास यह PHP कोड है, लूप के लिए:

  $ expireData = array ( ); ($ X = 0; $ x & lt; = 10; $ x ++) {$ stmt = $ dbh-> gt; तैयार करें ("चुनें राउंड ((expired - unix_timestamp ()) / 86400) दिन के रूप में, (*) के रूप में गणना करें उपयोगकर्ताओं से सीएनटी WHERE user_by =: उपयोगकर्ता नाम समूह दिन; "); $ Stmt- & gt; bindParam ( ": उपयोगकर्ता नाम", $ userdata [ 'उपयोगकर्ता नाम']); $ Stmt- & gt; निष्पादित (); $ Row = $ stmt- & gt; फ़ेच ALL (); #var_dump ($ पंक्ति); अगर ($ पंक्ति ["सीएनटी"]> gt; {$ expireData [] = $ पंक्ति ["सीएनटी"]; } और {$ expireData [] = 0; }}  

अगर मैं var_dump ($ पंक्ति) करता हूं:

  array (2) {0] = & gt; सरणी (4) {["दिन"] = & gt; स्ट्रिंग (2) "27" [0] = & gt; स्ट्रिंग (2) "27" ["सीएनटी"] = & gt; स्ट्रिंग (1) "2" [1] = & gt; स्ट्रिंग (1) "2"} [1] = & gt; सरणी (4) {["दिन"] = & gt; स्ट्रिंग (3) "116" [0] = & gt; स्ट्रिंग (3) "116" ["सीएनटी"] = & gt; स्ट्रिंग (1) "8" [1] = & gt; स्ट्रिंग (1) "8"}}  

लेकिन अगर मैं सिर्फ $ पंक्ति ['cnt'] को गूंजती हूं; यह कुछ भी नहीं गूंजती - यह खाली है । क्यों?

अंततः, मैं लूप के बाहर के लिए डेटा का उपयोग लूप के बाहर करना चाहता हूं - जैसे:

  इको फोंट (',', $ expireData);  

लेकिन यह सिर्फ मुझे देता है

  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 < / Pre> 

मैं क्या कर रहा हूं?

क्योंकि आप fetchAll का उपयोग कर रहे हैं () सभी पंक्तियों को $ पंक्ति में प्राप्त करने के लिए, इसकी सामग्री एक <2> एकाधिक पंक्तियों का प्रतिनिधित्व करने वाली 2 आयामी सरणी हैं तो कुंजी ['cnt'] मौजूद है, लेकिन आपके सरणी में एक आयाम आगे है।

$ row ['cnt'] doesn ' टी मौजूद है लेकिन $ पंक्ति [0] ['सीएनटी'] करता है और $ पंक्ति [1] ['सीएनटी'] मौजूद है।

अपने मौजूदा कोड के साथ सरलतम समाधान को $ expireData लूप के बाहर और अपने स्वयं के लूप में ले जाने के लिए है:

  $ expireData = array (); $ Stmt = $ dbh- & gt; तैयार ("चुनें दौर ((समाप्ति - unix_timestamp ()) / 86400) दिन के रूप में, (*) उपयोगकर्ताओं से सीएनटी के रूप में गणना करें WHERE user_by =: उपयोगकर्ता नाम समूह दिन;); $ Stmt- & gt; bindParam ( ": उपयोगकर्ता नाम", $ userdata [ 'उपयोगकर्ता नाम']); $ Stmt- & gt; निष्पादित (); // सभी पंक्तियों को $ पंक्तियों के बजाय $ पंक्ति में लोड करें ... $ पंक्तियां = $ stmt- & gt; फ़ेच ALL (); // $ समाप्त करने के लिए सभी पंक्तियों पर लूप $ $ समाप्त होने वाला डेटा ($ पंक्ति के रूप में पंक्तियां) {if ($ row ["cnt"]> gt; {$ expireData [] = $ row ["cnt"]; } और {$ expireData [] = 0; }} Print_r ($ समाप्ति डेटा);  

दूसरी विधि fetchAll () से सादे fetch () से स्विच करने के लिए और पंक्तियों को $ पंक्तियों पर जोड़ना होगा एक समय में लूप:

  // सभी पंक्तियां $ पंक्तियां = सरणी () रखने के लिए; // (बाहरी के लिए लूप निकाल दिया जाता है ...) $ stmt = $ dbh- & gt; तैयार ("चुनें राउंड ((expired - unix_timestamp ()) / 86400 दिन के रूप में, गिनें (*) उपयोगकर्ताओं से सीएनटी के रूप में WHERE user_by =: उपयोगकर्ता नाम समूह द्वारा दिन; "); $ Stmt- & gt; bindParam ( ": उपयोगकर्ता नाम", $ userdata [ 'उपयोगकर्ता नाम']); $ Stmt- & gt; निष्पादित (); // एक समय में लूप में एक कॉल करें () कॉल करें ($ पंक्ति = $ stmt- & gt; फ़ेच ()) {// सभी पंक्तियों की सरणी पर पंक्तियाँ $ पंक्तियां [] = $ पंक्ति; // फिर एक ही लूप में $ समाप्ति डेटा को संभाल लें अगर ($ पंक्ति ["सीएनटी"]> gt; {$ expireData [] = $ row ["cnt"]; } और {$ expireData [] = 0; }}  

10 मानों की सरणी को पैड करें:

टिप्पणियों में निर्धारित के अनुसार, आपको अपने अंतिम $ expireData सरणी की जरूरत 10 मान। एक लूप के साथ ऐसा करने के बजाय, इसे दस तक बढ़ाएं और इसे शून्य से भरें।

  $ expireData = array_pad ($ expiredData, 10, 0); // चालू करने के लिए [2,8] में [2,8,0,0,0,0,0,0,0,0,0]  

नोट्स ऑन लूप:

बाहरी के लिए का उपयोग संदिग्ध है क्योंकि यह स्पष्ट रूप से हर वक्त एक ही कथन निष्पादित कर रहा है।

त्रुटि रिपोर्टिंग पर नोट्स:

तथ्य यह है कि आपने PHP को शिकायत नहीं की अपरिभाषित सूचकांक के बारे में नहीं देखा है। Cort 'लूप लोड करते समय पता चलता है कि आप display_errors चालू नहीं कर रहे हैं और error_reporting के साथ विकसित नहीं हो रहे हैं हमेशा ऐसा करते समय कोड का विकास और परीक्षण करते हैं इससे आपको समस्या को शीघ्र ही देखने में मदद मिली हो।

आपकी स्क्रिप्ट के शीर्ष पर:

  त्रुटि_रेपोर्टिंग (E_ALL); Ini_set ('display_errors', 1);  

Comments

Popular posts from this blog

apache - 504 Gateway Time-out The server didn't respond in time. How to fix it? -

c# - .net WebSocket: CloseOutputAsync vs CloseAsync -

c++ - How to properly scale qgroupbox title with stylesheet for high resolution display? -