php - Group multidimensional array -


निम्न सरणी को देखते हुए:

  var dates = ['2012-10-01' , '2012-10-02', '2012-10-03', '2011-01-01', '2011-01-02', '2011-06-03', '2010-09-01', ' 2010-09-02 ',' 2010-08-22 '];   

मुझे इसके द्वारा वर्ष के महीने तो समूह की आवश्यकता है ताकि मेरा अंतिम परिणाम ऐसा कुछ हो:

  Array ("2012" = & gt; Array ("10" = & gt; ऐरे ["01", "02", "03"]) "2011" = & gt; ऐरे ("01" = & gt; ऐरे ["01", "02"]) अर्रे (" 06 "= & gt; ऐरे [" 03 "])" 2010 "= & gt; ऐरे (" 09 "=> एरे [" 01 "," 02 "]) अर्रे (" 08 "= & gt; ऐरे [" 22 " ]))   

अंत में मैं स्वत: एक एमएम / डीडी / वाई वाई वाई ड्रॉप बूंदों को आबाद करेगा। इसलिए यदि कोई प्रयोक्ता वर्ष 2012 का चयन करता है तो अगले महीने ड्रॉप डाउन मान केवल 10 है, उसके बाद दिन ड्रॉप डाउन होता है जिसमें केवल 01, 02, 03 होता। यदि वे 2011 का चयन करते हैं तो अगले महीने केवल 1, 06 कहेंगे। अगर वे 01 का चयन करें तो निम्नलिखित दिन केवल 01 या 02 होंगे।

आशा है कि किसी को भ्रमित नहीं किया और सवाल स्पष्ट है। बहुआयामी arrays सबसे खराब मैं जानता हूँ

आदर्श रूप से यह आईडी जावास्क्रिप्ट में करना है लेकिन PHP भी ठीक है। एक सरणी में, एक सरणी बाहर।

यह ऐसा करेगा:

 < कोड> $ तिथियां = सरणी ('2012-10-01', '2012-10-02', '2012-10-03', '2011-01-01', '2011-01-02', '2011- 06-03 ',' 2010-09-01 ',' 2010-09-02 ',' 2010-08-22 '); $ आउट = एरे (); विदेशी मुद्रा ($ दिनांक $ तारीखें) {$ भागों = विस्फोट ('-', $ तारीख); यदि (! Isset ($ $ [$ parts [0]])) $ $ [$ parts [0]] = array (); यदि (! Isset ($ $ [$ भागों [0]] [$ भागों [1]]) $ $ [$ भागों [0]] [$ भागों [1]] = सरणी (); अगर $! [$ भागों [2], $ $ [$ भागों [0]] [$ भागों [1]]) $ $ [$ भागों [0]] [$ भागों [1]] [] = $ भागों [2]; } Var_dump ($ आउट);   

आउटपुट:

  सरणी 2012 = & gt; सरणी 10 = & gt; सरणी 0 = & gt; स्ट्रिंग '01' (लंबाई = 2) 1 = & gt; स्ट्रिंग '02' (लंबाई = 2) 2 = & gt; स्ट्रिंग '03' (लंबाई = 2) 2011 = & gt; सरणी '01' = & gt; सरणी 0 = & gt; स्ट्रिंग '01' (लंबाई = 2) 1 = & gt; स्ट्रिंग '02' (लंबाई = 2) '06' = & gt; सरणी 0 = & gt; स्ट्रिंग '03' (लम्बाई = 2) 2010 = & gt; सरणी '09' = & gt; सरणी 0 = & gt; स्ट्रिंग '01' (लंबाई = 2) 1 = & gt; स्ट्रिंग '02' (लंबाई = 2) '08' = & gt; सरणी 0 = & gt; स्ट्रिंग '22' (लंबाई = 2)    

Comments