0
忽略特殊字符我有一個數組:排序數組中的PHP
Array ( '9:00', '22:00', '12:00', '*15:00' )
我想作爲排序是這樣的:
Array ( '9:00', '12:00', '*15:00', '22:00' )
這可能嗎?我試圖忽略數組中的星號進行排序,但星號保留在元素中。
忽略特殊字符我有一個數組:排序數組中的PHP
Array ( '9:00', '22:00', '12:00', '*15:00' )
我想作爲排序是這樣的:
Array ( '9:00', '12:00', '*15:00', '22:00' )
這可能嗎?我試圖忽略數組中的星號進行排序,但星號保留在元素中。
如何:
$foo = array('9:00', '22:00', '12:00', '*15:00');
usort($foo, function($a, $b) {
$a = preg_replace('|[^\d:]|', '', $a);
$b = preg_replace('|[^\d:]|', '', $b);
return strnatcmp($a, $b);
});
print_r($foo);
輸出:
Array
(
[0] => 9:00
[1] => 12:00
[2] => *15:00
[3] => 22:00
)
對不起!我之前並不欣賞,但你的答案完美無缺。謝謝 – 2014-09-25 15:14:40
是在15錯字前面的星號?還是意味着在那裏?數據集中是否還有其他這樣的字符? – lxg 2014-09-18 18:37:07
如果你想保留星號,那麼你可能需要編寫自己的排序功能。到目前爲止,沒有內置的功能來做到這一點。 – 2014-09-18 18:38:32
如果您擁有*之前的內容,則無法在PHP中進行本地排序。你需要創建一個函數去除主要的特殊字符,使用natcasesort(可能是這裏最好的),然後引用原始數組的鍵來獲得真正的值。 – 2014-09-18 18:38:50