2012-09-05 43 views
0

我有這樣陣列固定數字順序

array 
    0 => 
    array 
     'title' => string 'Last Name' (length=9) 
     'price' => string '0.0000' (length=6) 
     'price_type' => string 'fixed' (length=5) 
     'is_required' => int 1 
    1 => 
    array 
     'title' => string 'Title 1' (length=6) 
     'price' => string '0.0000' (length=6) 
     'price_type' => string 'fixed' (length=5) 
     'is_required' => int 0 
    2 => 
    array 
     'title' => string 'Title 10' (length=7) 
     'price' => string '0.0000' (length=6) 
     'price_type' => string 'fixed' (length=5) 
     'is_required' => int 0 
    3 => 
    array 
     'title' => string 'Title 11' (length=7) 
     'price' => string '0.0000' (length=6) 
     'price_type' => string 'fixed' (length=5) 
     'is_required' => int 0 
    4 => 
    array 
     'title' => string 'Title 12' (length=7) 
     'price' => string '0.0000' (length=6) 
     'price_type' => string 'fixed' (length=5) 
     'is_required' => int 0 
    5 => 
    array 
     'title' => string 'Title 2' (length=6) 
     'price' => string '0.0000' (length=6) 
     'price_type' => string 'fixed' (length=5) 
     'is_required' => int 0 
    6 => 
    array 
     'title' => string 'Title 3' (length=6) 
     'price' => string '0.0000' (length=6) 
     'price_type' => string 'fixed' (length=5) 
     'is_required' => int 0 
    7 => 
    array 
     'title' => string 'Title 4' (length=6) 
     'price' => string '0.0000' (length=6) 
     'price_type' => string 'fixed' (length=5) 
     'is_required' => int 0 
    8 => 
    array 
     'title' => string 'Title 5' (length=6) 
     'price' => string '0.0000' (length=6) 
     'price_type' => string 'fixed' (length=5) 
     'is_required' => int 0 
    9 => 
    array 
     'title' => string 'Title 6' (length=6) 
     'price' => string '0.0000' (length=6) 
     'price_type' => string 'fixed' (length=5) 
     'is_required' => int 0 
    10 => 
    array 
     'title' => string 'Title 7' (length=6) 
     'price' => string '0.0000' (length=6) 
     'price_type' => string 'fixed' (length=5) 
     'is_required' => int 0 
    11 => 
    array 
     'title' => string 'Title 8' (length=6) 
     'price' => string '0.0000' (length=6) 
     'price_type' => string 'fixed' (length=5) 
     'is_required' => int 0 
    12 => 
    array 
     'title' => string 'Title 9' (length=6) 
     'price' => string '0.0000' (length=6) 
     'price_type' => string 'fixed' (length=5) 
     'is_required' => int 0 

數組所以問題是,在數組中我有標題。當我做foreach循環標題顯示爲

LAST NAME: 
Title 1: 
Title 10: 
Title 11: 
Title 12: 
Title 2: 
Title 3: 
Title 4: 
Title 5: 
Title 6: 
Title 7: 
Title 8: 
Title 9: 

正如你可以看到,標題10顯示出來之後緊接其不正確的數字順序。我怎樣才能解決這個問題。 謝謝

TRIED $ titles = array(); ($ product-> custom_options as $ key => $ row) { $ titles [$ key] = $ row ['title']; var_dump(array_multisort($ titles,SORT_DESC,$ product-> custom_options)); var_dump(array_multisort($ titles,SORT_DESC,$ product-> custom_options));

+1

[排序在PHP多維數組]的可能重複(http://stackoverflow.com/questions/2059255/sorting-multidimensional-array-in-php) – bfavaretto

+1

「修復順序」通常被稱爲「排序」 。 –

回答

2

試試合併usortstrnatcmp。事情是這樣的:

usort($array, function($lhs, $rhs){ 
    return strnatcmp($lhs['title'], $rhs['title']); 
}); 
+0

優秀!!!奇蹟般有效! – Autolycus

0

你從來沒有對數組進行排序,因爲你插入這樣的項目也正在顯示的順序,首先需要訂購的數組,但不能以字母數字方式。嘗試使用具有整數值的另一個字段。

0

這個問題很可能是因爲數組的產生,而不是像現在這樣修復它。從我看到你有一個標題作爲第一個元素,從那時起,你有沒有被正確分類的元素。

不知道確切的要求,並根據您發佈的內容,方式爲「排序」,這將是:

// $data array is the existing array 
$new_array = array(); 
foreach ($data as $item) { 
    if ($item['title'] == 'Last Name') { 
     $new_array[0] = $item; 
    } 
    else 
    { 
     $key = intval(trim(str_replace("Title ", "", $item['title']))); 
     $new_array[$key] = $item; 
    } 
} 

ksort($new_array); 

結果數組有鍵0作爲報頭中的元素,一切取決於在「標題XX」,其中XX是一個數字(從標題元件採取

HTH

0

可以直接使用PHP定義natsort function那種使用「自然順序」算法的數組。

只需編寫以下代碼即可完成。

natsort($array);