【发布时间】:2010-12-08 09:37:45
【问题描述】:
标题所说的。特别是如果我有
$array1['name'] = 'zoo';
$array2['name'] = 'fox';
如何确定$array2 的名字按字母顺序排在$array1 的上方?
【问题讨论】:
标题所说的。特别是如果我有
$array1['name'] = 'zoo';
$array2['name'] = 'fox';
如何确定$array2 的名字按字母顺序排在$array1 的上方?
【问题讨论】:
使用@987654321@。如果 strcmp 的第一个参数按字典顺序小于第二个,则返回的值将为负数。如果两者相等,则返回 0。如果第一个在字典上大于第二个,则返回一个正数。
注意。您可能想使用@987654322@(string1,string2),它会忽略大小写...
【讨论】:
您可以将这两个字符串与strcmp 进行比较:
如果str1小于str2,则返回 如果 str1 大于 str2 则为 0,如果它们相等则为 0。
【讨论】:
我来晚了(那么我在 2009 年还不是程序员 :-) 还没有人提到这一点,但你也可以简单地使用你在数字上使用的运算符。
< > <= >= == != 等
例如:
'a' > 'b' 返回false
'a' < 'b' 返回true
http://php.net/manual/en/language.operators.comparison.php
重要
有一个缺陷,你可以在下面的 cmets 中找到。
【讨论】:
'10' < '2' 的计算结果为 false,即使字符串 '10' 应该在 '2' 之前进行比较,如果您比较 按字母顺序(这就是问题所在)。这是因为每当字符串看起来像整数时,PHP 都会自动将它们转换为整数并按数字而不是按字母顺序进行比较。如果您的目标是真正按字母顺序比较,您应该按照建议使用strcmp()。
我经常使用natsort (Natural Sort),因为我通常只想保留数组以供以后使用。
例子:
natsort($unsorted_array);
var_dump($usorted_array); // will now be sorted.
【讨论】:
EDIT 刚刚实现了来自不同数组的值,可以先array_merge,但不确定这就是你想要的
【讨论】: