查看PHP中natcasesort的文档,它以不区分大小写的方式对数组进行排序。但是,在我尝试重新排列包含相同字母的两个无序数组之后,检查它们是否相同,它会给我错误。见下文:
$ary=array("b", "z", "A", "C", "S");
$ary1=array("A", "z", "b", "S", "C");
natcasesort($ary);
natcasesort($ary1);
print_r($ary);
print_r($ary1);
if ($ary==$ary1) {
echo "True";
} else {
echo "False";
}
我得到的结果是:
Array ( [2] => A [0] => b [3] => C [4] => S [1] => z )
Array ( [0] => A [2] => b [4] => C [3] => S [1] => z )
False
这显然是因为它仍然保存了原始数组中字母的原始位置。如何更改括号中显示的原始位置以永久更改为递增计数(在这种情况下,在不区分大小写的字母顺序中为0到4)?
答案 0 :(得分:4)
使用array_values
获取包含新索引的新数组:
natcasesort($ary);
natcasesort($ary1);
$ary = array_values($ary);
$ary1 = array_values($ary1);
if ($ary == $ary1) {
echo "True";
} else {
echo "False";
}
或者,如果您这样做了很多,那么构建一个函数:
function natcasesortv(&$array) {
natcasesort($array);
$array = array_values($array);
}