php - 如何让 PHP natcasesort 永久重新排列数组位置?

标签 php arrays

查看 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,不区分大小写的字母顺序)?

最佳答案

使用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);
}

关于php - 如何让 PHP natcasesort 永久重新排列数组位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26823744/

相关文章:

java - 将 arraylist 的范围转换为字符串数组

c - char 数组的行为如何?当它被类型转换为指向结构的指针时?

php - 在没有 Apache 的情况下在 NetBeans 6.8 上调试 PHP

php - 有没有使用 PHP 作为虚拟机的语言?

php - 在准备查询时,检查 ($stmt = $mysqli->prepare($query)) 是否为假有多重要?

C - 什么时候使用指针运算,什么时候使用数组索引?

javascript - 单击按钮后下载 CSV 文件

php - 使用 shell 将参数传递给 php

c - 局部数组和数组索引变量如何存在于内存中?

python - np.savetxt 似乎不适用于 n 维数组