gpt4 book ai didi

php - 为什么我的 if 条件会跳过字符?

转载 作者:搜寻专家 更新时间:2023-10-31 21:19:27 24 4
gpt4 key购买 nike

我做了一个游戏 flames,其中给定的名字是 Patrick,另一个名字是 Abcdefg,循环会从一个名字中删除一个与另一个名字中的角色相同的角色。当我的条件是 if srtlen($name1)==strlen($name2) 时,为什么我的循环没有崩溃出名字 Patrick 和 abcdefg 中的字母 a?它只会崩溃 c。

我的问题在 if($r==$e) 部分。

名称 Patrick 和 abcdefg 的预期结果是 status=10;因为A和C崩溃了。

      <html>
<head>
<title>Flames</title>
</head>
<body>
<center><form method="post" style="margin-top:60px;">
<h2>Flames</h2>
<input type="text" name="name1" placeholder="First name"/><br>
<input type="text" name="name2" placeholder="Second name"/><br><br>
<input type="submit" name="submit" value="submit"/>
</form>
<?php
if(isset($_POST['submit'])){
$name1=$_POST['name1'];
$name2=$_POST['name2'];

//this is if the names have space on it.
if(strstr($name1,' ')&&strstr($name2,' ')||strstr($name1,' ')||strstr($name2,' ')){
$exploded1=explode(' ',$name1);
$exploded2=explode(' ',$name2);
$joined1=implode("",$exploded1);
$joined2=implode("",$exploded2);
$e=strlen($joined2);
$r=strlen($joined1);
}
else{
$r=strlen($name1);
$e=strlen($name2);
}
$counter=0;
$same=0;
if($r>$e){
for($m=0; $m<=$e-1; $m++){
for($i=0; $i<=$r-1; $i++){
if($counter<$e){
if($joined1[$i]==$joined2[$m]){
$same++;
//$counter++;
$joined1[$i]=' ';
break;
}
}
}
}
}
elseif($e>$r){
for($m=0; $m<=$r-1; $m++){
for($i=0; $i<=$e-1; $i++){
if($counter<$r){
if($joined2[$i]==$joined1[$m]){
$same++;
//$counter++;
$joined2[$i]=' ';
break;
}
}
}
}
}

//this is where it did not check the a character which is most likely to be crashed out because it has a pair
if($r==$e){
for($m=0; $m<$r; $m++){
for($q=0; $q<$r; $q++){
if($name1[$q]==$name2[$m]){
echo $name1[$q].'<br>';
$same++;
//$counter++;
$name1[$q]=' ';
break;
}
}
}

}


$sum=$e+$r;
$mult=$same*2;
$status=$sum-$mult;
echo $joined1.'<br>';
echo $joined2.'<br>';
echo 'r'.$r; echo '<br>';
echo 'e'.$e; echo '<br>';
echo 'status'.$status; echo '<br>';
echo 'sum'.$sum;echo '<br>';
echo 'mult'.$mult; echo '<br>';
echo "$joined1 <br>";
echo "$joined2 <br>";

//this is to determine the flames status.
if($status==1||$status%6==1){
echo 'Friends';
}

if($status==2||$status%6==2){
echo 'Lovers';
}

if($status==3||$status%6==3){
echo 'Anger';
}

if($status==4||$status%6==4){
echo 'Marriage';
}

if($status==5||$status%6==5){
echo 'Enemy';
}

if($status==6||$status%6==0){
echo 'Soulmates';
}
}
?>
</center>
</body>
</html>

最佳答案

当您比较 PatrickAbcdefg 时,c 将只匹配大写 A 和小写 a 是不同的,因此要解决此问题,您可以将 names 转换为 lowercase然后比较它们。即:

    $name1=strtolower($_POST['name1']);
$name2=strtolower($_POST['name2']);

输出:

a<br>c<br>patrick<br>abcdefg<br>r7<br>e7<br>status10<br>sum14<br>mult4<br>patrick <br>abcdefg <br>Marriage

关于php - 为什么我的 if 条件会跳过字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57504515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com