PHP 数组索引未正确移动


PHP array indexes not moving correctly

我正在尝试根据自定义字母对字符串进行排序。我有 php 代码可以破坏要分类为字符串数组的文件。我正在尝试对每个字符串进行排序。字符串对自身进行正确排序,但它们没有在数组中正确移动。我是 php 的新手,所以我希望有人能告诉我我的错误。

谢谢:)

<?php
echo " start ";
        $file = fopen('inFile.txt', "r");
        $firstLine = fgets($file);
echo " hi ";
$x = 0;
while(! feof($file)){
$restOfFile[$x] = fgets($file);
$x++;
}
$firstLine = str_replace(' ','',$firstLine);

fclose($file);
//echo $firstLine;
//print_r( $restOfFile);
function mylst($a,$b){
$pos1 = 0;
$pos2 = 0;
global $firstLine;

if(strlen($a) > strlen($b)){
     $string = $b;
}else{
     $string = $a;
}
for ($i=0;$i<(strlen($string) && $pos1===$pos2); $i++){
     $pos1 = strpos($firstLine,substr($a,1));
     $pos2 = strpos($firstLine,substr($b,1));
}
if ($pos1 === $pos2 && strlen($a) !== strlen($b)){
     return (strlen($a)-strlen($b));
}
  return $pos1-$pos2;
}

echo " BEFORE ";
print_r($restOfFile);
echo " AFTER ";
usort($restOfFile,"mylst");
print_r($restOfFile);

?>

我认为主要问题是substr()的使用。

substr($b,1)

返回从字符串的第一个位置到末尾的所有内容。它应该是:

substr($b, $i, 1)

修改功能:

function mylst($a,$b){
$pos1 = 0;
$pos2 = 0;
global $firstLine;

$l = (strlen($a) > strlen($b)) ? strlen($b) : strlen($a);
for ( $i = 0; ($i < $l) && ($pos1 === $pos2); $i++){
     $pos1 = strpos($firstLine,substr($a,$i,1));
     $pos2 = strpos($firstLine,substr($b,$i,1));
}
if ($pos1 === $pos2 && strlen($a) !== strlen($b)){
     return (strlen($a)-strlen($b));
}
  return $pos1-$pos2;
}