php - Sorting array with dates with asort() does not work properly -
यह क्रमबद्ध सरणी है, प्रारूप में dd-mm-yyyy:
array (6) {["7-0"] = & gt; स्ट्रिंग (10) "28-04-2014" ["7-1"] = & gt; स्ट्रिंग (10) "29-04-2014" ["7-2"] = & gt; स्ट्रिंग (10) "30-04-2014" ["7-3"] = & gt; स्ट्रिंग (10) "01-05-2014" ["7-5"] = & gt; स्ट्रिंग (10) "26-04-2014" ["7-6"] = & gt; स्ट्रिंग (10) "27-04-2014"}
अब मैं सॉर्टिंग का उपयोग कर रहा हूं:
array (6) {["7-3" ] = & gt; स्ट्रिंग (10) "01-05-2014" ["7-5"] = & gt; स्ट्रिंग (10) "26-04-2014" ["7-6"] = & gt; स्ट्रिंग (10) "27-04-2014" ["7-0"] = & gt; स्ट्रिंग (10) "28-04-2014" ["7-1"] = & gt; स्ट्रिंग (10) "29-04-2014" ["7-2"] = & gt; स्ट्रिंग (10) "30-04-2014"}
मूल्य के आधार पर सरणी को क्रमबद्ध करने के लिए asort () का उपयोग करके, लेकिन 01 का अब सबसे पहले आता है। क्या मुझे इस आसान तरीके से हल करने के लिए कोई रास्ता है? यह सरणी में अंतिम होना चाहिए, इसलिए इसका अगले महीने में होना चाहिए। (01-05-2014)
अपडेट:
ऊपर से पहले (और) asort () var_dump () प्रतिक्रिया थी। नीचे कोड स्निपेट है अलग-अलग प्रयासों के बाद, इस सप्ताह तक एस्ट्रॉट () ठीक काम किया है, जहां महीने के अंत के बारे में है - फिर सरणी सही ढंग से हल नहीं होती है।
$ openhours_select = array (); विदेशी मुद्रा ($ ओह, ओह के रूप में $ ओह) {$ d = तिथि ('डी-एम-वाई', स्ट्रटोटेम ('यह'। $ दिन [$ oh ['से' ']')); $ ओपनहोर्स_सैच करें [$ oh ['id']] = $ d; } एस्पोर्ट ($ ओपनहोर्स_सैकेट);
यह दिनांक सॉर्टिंग के लिए एक अच्छे प्रारूप में नहीं हैं। आपको आईएसओ -8601 प्रारूप में तारीखों को संचित करना चाहिए जो सॉर्ट करना आसान हो और आवश्यक होने पर पुनरारंभ करें।
लेकिन इसके चारों ओर काम करने के लिए आप DateTime :: createFromFormat ()
को पढ़ने के लिए उपयोग कर सकते हैं दिनांक में एक तुलनीय प्रारूप में और फिर उन्हें सॉर्ट करें।
uasort ($ openhours_select, फ़ंक्शन ($ a, $ b) {$ date1 = DateTime :: createFromFormat ('dm-Y',) $ A); $ date2 = दिनांक समय :: createFromFormat ('डीएम-वाई', $ बी); वापसी $ date1 & gt; $ date2;});
Comments
Post a Comment