2012-01-31 21 views
11

द्वारा ऑर्डर करें। मैं दो सरणीदो सरणी को संयोजित करें और इस नई सरणी को

पहले एक

Array 
    (
     [0] => Array 
      (
       [date] => 2012-01-10 
       [result] => 65 
       [name] => Les océans 
      ) 

     [1] => Array 
      (
       [date] => 2012-01-11 
       [result] => 75 
       [name] => Les mers 
      ) 

     [2] => Array 
      (
       [date] => 2012-01-13 
       [result] => 66 
       [name] => Les continents 
       [type] => Scores 
      ) 

    ) 

दूसरा

Array 
(
    [0] => Array 
     (
      [date_end] => 2012-01-12 
      [result] => 60 
      [name] => Step#1 
      [type] => Summary 
     ) 

) 

और मैं अपने अंतिम परिणाम

Array 
     (
      [0] => Array 
       (
        [date] => 2012-01-10 
        [result] => 65 
        [name] => Les océans 
       ) 

      [1] => Array 
       (
        [date] => 2012-01-11 
        [result] => 75 
        [name] => Les mers 
       ) 

      [2] => Array 
      (
       [date_end] => 2012-01-12 
       [result] => 60 
       [name] => Step#1 
       [type] => Summary 
      ) 

      [3] => Array 
       (
        [date] => 2012-01-13 
        [result] => 66 
        [name] => Les continents 
        [type] => Scores 
       ) 

     ) 

तो के लिए इस चाहते हैं .... मैं गठबंधन करने के लिए की जरूरत है दूसरी के साथ मेरा पहला सरणी और मैं इस नए सरणी को तिथि के अनुसार आदेश देना चाहता हूं! ... क्या कोई मुझे ऐसा करने के लिए संकेत दे सकता है? धन्यवाद !

+0

जब आप डीबी – dfsq

+3

@dfsq से इसे चुनते हैं तो आपको 'जॉइन' बनाना होगा, आपको लगता है कि एक डेटाबेस है। – Crashspeeder

+0

मुझे यकीन है कि यह है। और यदि ऐसा है तो ओपी ने गलत दृष्टिकोण चुना है। – dfsq

उत्तर

16

array_merge और usort अपने दोस्त है।

function cmp($a, $b){ 
    $ad = strtotime($a['date']); 
    $bd = strtotime($b['date']); 
    return ($ad-$bd); 
} 
$arr = array_merge($array1, $array2); 
usort($arr, 'cmp'); 
+0

एक साइड नोट के रूप में मैं वास्तव में usort php दस्तावेज (इसका उत्तर लिंक) पढ़ने का सुझाव देता हूं, यह चीजों को समझने में बहुत आसान बनाता है। विशेष रूप से प्रतीत होता है रहस्यमय वापसी ($ विज्ञापन- $ डीबी) और usort ($ arr, 'cmp'); –

+0

मैंने इस http://stackoverflow.com/questions/39243553/how-does-this-usort-cmp-function-actually-work से संबंधित एक प्रश्न पूछा, क्या आप मदद कर सकते हैं? –

+1

क्या मैंने आपका प्रश्न बहुत देर से देखा होगा। सौभाग्य से पहले से ही आपके प्रश्न का एक अच्छा जवाब है। –

2

सरणी को गठबंधन करने के लिए array_merge() का उपयोग करें, और उसके बाद क्रमबद्ध करने के लिए सॉर्ट करें() को सॉर्ट करें, बहुत सरल। क्या आपको एक उदाहरण चाहिए?

यह आप के लिए यह सॉर्ट करना चाहिए:

function dateSort($a,$b){ 
    $dateA = strtotime($a['date']); 
    $dateB = strtotime($b['date']); 
    return ($dateA-$dateB); 
} 

$arrayOne = array(
    array(
     'date'  => '2012-01-10', 
     'result ' => 65, 
     'name'  => 'Les océans' 
    ), 
    array(
     'date'  => '2012-01-11', 
     'result ' => 75, 
     'name'  => 'Les mers' 
    ), 
    array(
     'date'  => '2012-01-13', 
     'result ' => 66, 
     'name'  => 'Les continents', 
     'type'  => 'Scores' 
    ) 
); 

$arrayTwo = array(
    array(
     'date'  => '2012-01-12', 
     'result ' => 60, 
     'name'  => 'Step#1', 
     'type'  => 'Summary' 
    ) 
); 

// Merge the arrays 
$combinedArray = array_merge($arrayOne,$arrayTwo); 

// Sort the array using the call back function 
usort($combinedArray, 'dateSort'); 
+0

हाँ कृपया, इसकी सराहना की जाएगी – user1029834

+0

एक मिनट में आपको वापस मिल जाएगा –

+0

क्या आपको तारीख को तारीख के रूप में स्टोर करने की आवश्यकता है, या आप बस टाइमस्टैम्प का उपयोग कर सकते हैं? फिर आवश्यक होने पर आप टाइमस्टैम्प को एक तारीख में परिवर्तित कर सकते हैं। मैं केवल इसलिए पूछता हूं क्योंकि यह सॉर्ट करना थोड़ा आसान बनाता है। –

1

array_merge अपने सरणियों और फिर आप यह कैसे सॉर्ट कर सकते हैं का एक उदाहरण के रूप में निम्न कोड का उपयोग करें।

function sortDate($val1, $val2) 
{ 
    if ($val1['date'] == $val2['date']) { 
     return 0; 
    } 

    return (strtotime($val1['date']) < strtotime($val2['date'])) ? -1 : 1; 
} 

$array = array(
    array('date' => '2012-01-10'), 
    array('date' => '2011-01-10'), 
    array('date' => '2012-01-01') 
); 

usort($array, "sortDate"); 
print_r($array); 
संबंधित मुद्दे