我有一个数组的值,我想按字母顺序排序,* 但 * 与数字排序后的字符。
例如,给定以下字符串:
$array = [
'Core 2 Duo',
'Core Duo',
'Core Quad',
'Core 4 Quad'
];
预期结果:
[
'Core Duo',
'Core 2 Duo',
'Core Quad',
'Core 4 Quad'
]
PHP的sort()函数并不合适,因为它将中间的字符串数字放在第一位,如下所示:
[
'Core 2 Duo',
'Core 4 Quad',
'Core Duo',
'Core Quad'
]
自然排序返回与常规排序相同的结果。
有没有什么方法可以告诉PHP“如果你遇到一个数字,把它排序,就像它在sting的末尾一样”?
3条答案
按热度按时间siv3szwd1#
看起来你所追求的是一个将字符串的所有数字元素推到后面的函数,e。g.“Core 2 Duo”=〉“Core Duo 2”。
ao218c7q2#
以下是您的解决方案:
输出:
l7wslrjt3#
为了可靠性,使用
preg_replace()
将所有数字子字符串移到字符串的后面,然后在array_multisort()
调用中使用自然排序。(Demo)输出: