2010-08-06 22 views
5

मेरे पास निम्न सरणी है।PHP सॉर्टिंग बहुआयामी सरणी

Array ( 
[0] => Array ([id] => 5 [category_id] => 12) 
[1] => Array ([id] => 3 [category_id] => 12) 
[2] => Array ([id] => 9 [category_id] => 12) 
[3] => Array ([id] => 4 [category_id] => 12) 
) 
+0

की डुप्लीकेट http://stackoverflow.com/प्रश्न/3376607/हेल्प-सॉर्टिंग-यह-सरणी/3376735 # 3376735 – stillstanding

उत्तर

2

आप इस

foreach($arr as $val) { 
    $ret[$val['id']] = $val['category_id']; 
} 
ksort($ret); 

मामले में की तरह यह कर सकते हैं आप एक ही सरणी तो हल कर पाने के लिए आप निम्न कोड जोड़ सकते हैं चाहते हैं:

foreach($ret as $key=>$val) { 
    $newArr[] = array('id'=>$key,'category_id'=>$val); 
} 
0

कोशिश array_multisort यह भीतरी सरणियों की पहली कुंजी/संपत्ति

0
function sort_by_field($field, & $data) { 
    $sort_func = create_function('$a,$b', 'if ($a["' . $field . '"] == $b["' . $field . '"]) {return 0;} 
      return ($a["' . $field . '"] < $b["' . $field . '"]) ? -1 : 1;'); 

    uasort($data, $sort_func); 
} 
8

उपयोग usort साथ द्वारा बाहरी सरणी सॉर्ट होगा: मैं द्वारा नेस्टेड सरणी कुंजी [id] इस सरणी सॉर्ट करने के लिए की जरूरत है एक कस्टम तुलना समारोह।

<?php 

function cmp($a, $b) { 
    if ($a['id'] == $b['id']) 
    return 0; 
    return $a['id'] < $b['id'] ? -1 : 1; 
} 

$array = Array ( 
    0 => Array ('id' => 5, 'category_id' => 12), 
    1 => Array ('id' => 4, 'category_id' => 12), 
    2 => Array ('id' => 7, 'category_id' => 12), 
    3 => Array ('id' => 3, 'category_id' => 12), 
); 

usort($array, 'cmp'); 

// Output: 3 4 5 7 
foreach ($array as $element) 
    echo $element['id'], " "; 
+0

एक अच्छा, सार्वभौमिक समाधान +1 करता है। – Centurion

+0

आप 'cmp' फ़ंक्शन में '$ a [' id '] - $ b [' id ']' वापस कर सकते हैं। – Artefacto

1

क्यों न केवल इस तरह अपना डेटा स्टोर करें?

Array ( 
    [5] => int(12) 
    [3] => int(12) 
    [9] => int(12) 
    [4] => int(12) 
) 

फिर आप सामान्य रूप से ksort() का उपयोग कर सकते हैं।

+1

इस प्रकार मैं एरे करता हूं जहां मुझे दो नंबरों को एक साथ मैप करने की आवश्यकता होती है। यह स्पष्ट नहीं हो सकता है, लेकिन यह इसके साथ काम करना बहुत आसान है। – tj111

2

शायद आप array_multisort का उपयोग करना चाहते हैं प्रलेखन में उदाहरण # 3 देखें।

संबंधित मुद्दे