2012-03-26 16 views
7

के वर्णानुक्रम सरणी मैं एक PHP सरणी है कि इस तरह दिखता है:पीएचपी तरह 2 डी नेस्टेड मूल्य

Array{ 
    [0] { 
     'id'  => '0', 
     'title' => 'foo', 
     'address' => '123 Somewhere', 
    } 
    [1] { 
     'id'  => '1', 
     'title' => 'bar', 
     'address' => '123 Nowhere', 
    } 
    [2] { 
     'id'  => '2', 
     'title' => 'barfoo', 
     'address' => '123 Elsewhere', 
    } 
    [3] { 
     'id'  => '3', 
     'title' => 'foobar', 
     'address' => '123 Whereabouts', 
    } 
} 

और मैं 'शीर्षक' नेस्टेड सरणियों में कुंजी के द्वारा यह सॉर्ट करने के लिए, इस तरह दिखना चाहते हैं: के बाद से मैं नेस्टेड कुंजी 'आईडी' के माध्यम से एक नेस्टेड सरणी का ट्रैक रखने कर रहा हूँ

Array{ 
    [1] { 
     'id'  => '1', 
     'title' => 'bar', 
     'address' => '123 Nowhere', 
    } 
    [2] { 
     'id'  => '2', 
     'title' => 'barfoo', 
     'address' => '123 Elsewhere', 
    } 
    [0] { 
     'id'  => '0', 
     'title' => 'foo', 
     'address' => '123 Somewhere', 
    } 
    [3] { 
     'id'  => '3', 
     'title' => 'foobar', 
     'address' => '123 Whereabouts', 
    } 
} 

प्रथम स्तर कुंजी मान कोई फर्क नहीं है।

मैंने ksort() के साथ खेला है लेकिन कोई सफलता नहीं है।

+1

संभव डुप्लिकेट http://stackoverflow.com/questions/2699086/php-sort- multidimensional-array-by-value) –

उत्तर

30

आप usort) का उपयोग करना चाहिए ((i पीएचपी संभालने हूँ 5.3+ यहाँ):

usort($your_array, function ($elem1, $elem2) { 
    return strcmp($elem1['title'], $elem2['title']); 
}); 

संपादित करें: मैंने देखा नहीं था आप सूचकांक संघ संरक्षित करने के लिए है, तो आप वास्तव में uasort() उपयोग करने की आवश्यकता चाहता था इसके बजाय, एक ही पैरामीटर के साथ।

EDIT2: यहाँ पूर्व पीएचपी 5.3 संस्करण है:

function compareElems($elem1, $elem2) { 
    return strcmp($elem1['title'], $elem2['title']); 
} 

uasort($your_array, "compareElems"); 
[मूल्य द्वारा पीएचपी तरह बहुआयामी सरणी] (की
+1

बिल्कुल सही, यह वही है जो मुझे चाहिए था। SO पर कुछ वैकल्पिक समाधान हैं लेकिन इनमें से अधिकांश (या सभी) की तुलना में यह अधिक सुरुचिपूर्ण लगता है। – melat0nin

+0

हम्म ने सिर्फ PHP <5.3 के साथ एक सर्वर में स्थानांतरित कर दिया है, इसलिए एम्बेडेड फ़ंक्शन काम नहीं करता है .. मैं यूसार्ट के बाहर फ़ंक्शन() के साथ समान प्रभाव प्राप्त करने के लिए इसे कैसे पुन: सक्रिय करूं? – melat0nin