php - Routine to split a result set and display it by date -
मेरे पास एक सरणी में संग्रहीत निम्नलिखित रिकॉर्डसेट हैं:
id start end 0 2014- 04-22 8:00:00 2014-04-22 22:00:59 1 2014-04-22 22:01:00 2014-04-22 23:00:59 2 2014-04-22 23:01:00 सरणी में निम्नलिखित संरचना है $ array [] = सरणी ('id' = & gt; रिकॉर्डसेट से आईडी, रिकॉर्डसेट से 'शुरू' = & gt; प्रारंभ तिथि, अभिलेखसेट से 'अंत' = & gt; समाप्ति तिथि);
मुझे इसे इस तरह दिखाना होगा
दिनांक आईडी आरंभ अंत 22/04/14 0 08:00:00 22:00:59 22 / 04/14 1 22:01:00 23:00:59 22/04/14 2 23:01:00 23:59:59 23/04/14 2 00:00:00 23:59:59 24/04 / 14 2 00:00:01 10:00:00 जिसका अर्थ है: 1) यदि 1 या अधिक कार्य एक दिन में समाप्त हो जाते हैं, तो प्रत्येक कार्य को एक पंक्ति में रखें। 2) यदि एक नौकरी की समाप्ति तिथि DATE के मौजूदा मान से बड़ा है, पंक्ति को END कॉलम 23:59:59 में डाल दीजिये, और एक नया पंक्ति शुरू करें एक नई पंक्ति में एक ही आईडी । मैंने प्रत्येक दिन के लिए एक "पंक्ति" सेट करने के लिए (22/04/14 से 24/04/14) और नौकरी को लूप की वर्तमान तारीख से मेल खाने वाली प्रारंभ तिथि के साथ डाल दिया, लेकिन मुझे एक दिन से अधिक समय में "फैलाने" का रास्ता नहीं मिल सकता है।
$ date = mktime (0,0,0,04,22,2014); जबकि ($ loopDate & lt; $ date * (3 * 86400)) {for ($ i = 0; $ i & lt; गिनती ($ सरणी); $ i ++) {if ($ array [$ i] ['end'] & lt ; $ लूपडेट और एंड्रॉएर [$ i] ['शुरू']) {गूंज $ लूपडेट। "," $ सरणी [$ i] ['आईडी']। ","। $ सरणी [$ i] ['शुरू']। ","। $ सरणी [$ i] ['अंत']; }}} अग्रिम धन्यवाद लुइस एम। वेलेंज़ेला
$ recordset = सरणी (array ('id' = & gt; 0 , 'शुरुआत' = & gt; '2014-04-22 8:00:00', 'अंत' = & gt; '2014-04-22 22:00:59'), सरणी ('आईडी' = & gt; 1, 'शुरू' = & gt; '2014-04-22 22:01:00', 'अंत' = & gt; '2014-04-22 23:00:59'), सरणी ('आईडी' = & gt; 2, ' शुरुआत '= & gt;' 2014-04-22 23:01:00 ',' अंत '= & gt;' 2014-04-24 10:00:00 '),); विदेशी मुद्रा ($ रिकॉर्ड $ रिकॉर्ड के रूप में) {$ start = DateTime :: createFromFormat ('वाई-एम-डी जी: आई: एस', $ रिकॉर्ड ['प्रारंभ']); $ End = DateTime :: createFromFormat ('वाई-एम-डी जी: आई: एस', $ रिकॉर्ड ['एंड']); यदि ($ स्टार्ट- & gt; प्रारूप ('वाई-एम-डी')! = $ अंत- & gt; प्रारूप ('वाई-एम-डी')) {$ diff = $ start- & gt; भिन्न ($ अंत); $ पैड = ($ स्टार्ट- & gt; प्रारूप ('उनका') & gt; $ end- & gt; प्रारूप ('उसका'))? 2: 1; $ दिन = $ diff- & gt; डी + $ पैड; $ Date = $ start- & gt; प्रारूप ('d / m / y'); $ Id = $ record ['id']; $ starttime = $ start- & gt; प्रारूप ('एच: आई: एस'); $ Endtime = '23: 59: 59'; आउटपुटरेकर ($ तारीख, $ आईडी, $ स्टार्टटाइम, $ एंडटाइम); ($ I = 2; $ i & lt; = $ दिन; $ i ++) के लिए {$ starttime = '00: 00: 01 '; $ Endtime = ($ i == $ दिन)? $ end- & gt; प्रारूप ('एच: आई: एस'): '23: 59: 59 '; आउटपुटरेकर ($ तारीख, $ आईडी, $ स्टार्टटाइम, $ एंडटाइम); }} Else {outputRecord ($ start-> प्रारूप ('d / m / y'), $ रिकॉर्ड ['id'], $ start- & gt; प्रारूप ('एच: i: s'), $ end-> gt ; प्रारूप ('एच: आई: एस')); }} फ़ंक्शन आउटपुट रिकॉर्ड ($ तारीख, $ आईडी, $ आरंभ, $ अंत) {printf ("% s% u% s% s% s", $ तारीख, $ id, $ start, $ end, "& lt; br & gt; \ n "); }
Comments
Post a Comment