此問題的跟進問題來自'This question'。 codeigniter代碼返回數據庫記錄集,如下所示。在一定條件的基礎上使用usort對多維數組進行排序
Array
(
[0] => stdClass Object
(
[user_id] => NLK32439
[first_name] => sdn
[last_name] => hf]zL
[email_address] => [email protected]
[mobile_number] => 9841349349
[description] => g]kfn
[date_joined] => 09-AUG-12
[status] => 1
[username] => user1
[userpassword] => 691f9298642af07c2d6ea8fef56074201e077b34
)
[1] => stdClass Object
(
[user_id] => NLK94358
[first_name] => alag
[last_name] => k|wfg
[email_address] => [email protected]
[mobile_number] => 823472384723
[description] => g]kfn
[date_joined] => 09-AUG-12
[status] => 1
[username] => user2
[userpassword] => 691f9298642af07c2d6ea8fef56074201e077b34
)
[2] => stdClass Object
(
[user_id] => NLK32437
[first_name] => ;lag
[last_name] => %]qL
[email_address] => [email protected]
[mobile_number] => 9851112412
[description] => g]kfn
[date_joined] => 08-AUG-12
[status] => 1
[username] => user3
[userpassword] => 691f9298642af07c2d6ea8fef56074201e077b34
)
[3] => stdClass Object
(
[user_id] => NLK32435
[first_name] => clgn
[last_name] => zdf{
[email_address] => [email protected]
[mobile_number] => 984134354
[description] => g]kfn
[date_joined] => 08-AUG-12
[status] => 1
[username] => user4
[userpassword] => 0e025eade868b4b481f41ff7449bc1967261e170
)
)
我想要做的就是根據一定的條件按「first_name」排序數組。我的PHP代碼到目前爲止是 -
<?php
usort($array, function ($a, $b) {
static $order = array('c', 's','a',';', 'L');
return array_search($a->first_name, $order) - array_search($b->first_name, $order);
});
?>
我打算做的是排序的陣列,使得如first_name與「C」 begining至上,以「S」排第二,用「A」來第三和與' ;」排在第四位。
但上面的代碼沒有按預期工作。它返回的記錄的順序:
's','a',';','c'
應該序列
'c', 's','a',';'
我爲使用自定義字體天城文中返回,所以在鍵盤的每個albhabet表示天城文特定字符。所以在devnagari中,c首先,第二個等等。
任何幫助將不勝感激。提前致謝
是的,我已經知道了,謝謝你的答覆。但遇到了另一個問題。有時兩個字母代表Devnagari中的一個字符,就像s代表devnagari中的一個字符一樣。無論如何要保持這一點,例如,如果我們有這樣的$ order數組,我想檢查第一個字符和前兩個字符,那麼可能的解決方案是什麼? static $ order = array('c','s','s]','a',';','L'); – WatsMyName 2012-08-09 10:19:15
@Sabin我已經更新了我的答案。 – 2012-08-09 18:25:56
非常感謝代碼,但代碼看起來不像預期的那樣工作。我有什麼是 static $ orders = array('c','s','s'「,'a',';','L'); 結果應該與上述數組的順序相同,但其顯示順序爲「c」,「a」,「s」,「;」,「s」 – WatsMyName 2012-08-10 03:49:32