排序数组忽略PHP中的特殊字符

时间:2014-09-18 18:35:43

标签: php arrays sorting

我有一个数组:

Array (
       '9:00',
       '22:00',
       '12:00',
       '*15:00'
)

我正试图这样排序:

Array (
       '9:00',
       '12:00',
       '*15:00',
       '22:00'
)

这可能吗?我试图忽略数组中的星号进行排序,但星号仍保留在元素中。

1 个答案:

答案 0 :(得分:1)

这个怎么样:

$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
)