PHP的使用 - 数组索引不能正确移动
问题描述:
我想基于自定义字母顺序排列字符串。我有PHP代码,打破文件被排序成一个字符串数组。我试图为每个字符串排序。字符串自己排序正确,但它们没有正确移动数组。我是新来的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;
}
我想我误解你想要做什么。你能给出一个你将使用的输入样本和期望的输出样本吗? – 2015-01-26 18:33:32
当然 输入 'vcawufotrb laencfuesw gvtkwekfom vrsfqictqc wmcvmjmtet qetegyqelu newaxdtjlt nfrfrwkknj fzqrvgblov gkkmgwwwpa' 输出 'newaxdtjlt nfrfrwkknj laencfuesw gkkmgwwwpa gvtkwekfom fzqrvgblov wmcvmjmtet vcawufotrb vrsfqictqc qetegyqelu' 用英文字母表示您的电子邮件地址 – 2015-01-26 19:24:04