Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让PHP natcasesort永久地重新排列数组位置?_Php_Arrays - Fatal编程技术网

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

如何让PHP natcasesort永久地重新排列数组位置?,php,arrays,Php,Arrays,查看PHP中natcasesort的文档,它以不区分大小写的方式对数组进行排序。但是,当我尝试重新排列包含相同字母的两个无序数组,并检查它们是否相等时,它会给出false。见下文: $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==$ar

查看PHP中natcasesort的文档,它以不区分大小写的方式对数组进行排序。但是,当我尝试重新排列包含相同字母的两个无序数组,并检查它们是否相等时,它会给出false。见下文:

$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\u值获得具有新索引的新数组:

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