$allsubs = array("j for e",);
$unaltered = "soupeercali";
$withj = str_replace("e", "j", $unaltered);
$stepsinchain = array($withj);
function choices($sub, $letter) {
global $allsubs;
global $stepsinchain;
array_push($allsubs, "$sub for $letter");
$subed= "with$letter";
echo $subed= str_replace($letter, $sub, prev($stepsinchain));
return $subed;
array_push($stepsinchain, $subed);
}
choices ("a", "o");
choices ("c", "l");
choices ("d", "i");
代码的快速解释:这个想法是有一个函数,它将接受一个单词并将所有指定的字母替换为另一个字母或数字。在我的函数 choices() 中,用户输入 $sub(stitution) 和将被替换的 $letter。该函数的第一部分工作正常,并将所有替换声明放入数组 $allsubs 中。
函数的第二部分意味着允许我继续使用 choices() 继续对第一个单词进行替换,这里称为“soupeercali”。我将每个替换词输入到数组中,这样我的函数就可以访问该词的前一个替换词以进行下一个替换。
但是不管用,一直用头撞墙,开始流血了。关于如何使这种功能起作用的任何帮助?
最后一个 array_push 没有被调用,因为你之前返回。改成:
array_push($stepsinchain, $subed);
return $subed;
由于 $subed 从未存储在 $stepsinchain 数组中,由于返回之前,您无法访问以前的交替。
array_push 也较慢,在数组中输入一个元素时不推荐使用。相反,使用
$stepsinchain[] = $subed;
如 http://www.php.net/manual/en/function.array-push.php#Hcom83388
中所述,它也快得多