Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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-if和else语句未显示正确的输出 石头剪刀布游戏 石头剪刀布游戏_Php_Html_If Statement - Fatal编程技术网

PHP-if和else语句未显示正确的输出 石头剪刀布游戏 石头剪刀布游戏

PHP-if和else语句未显示正确的输出 石头剪刀布游戏 石头剪刀布游戏,php,html,if-statement,Php,Html,If Statement,(第二页)这是一个石头剪刀游戏,包含图像…图像在用户输入(石头、剪刀或布)后显示,但通常是这样的(输出=石头和纸的图像,然后它会说你赢了!而不是你输了!或者当它是平局时,什么都没有显示) <!DOCTYPE html> <html lang="en"> <head> <title>Rock Paper Scissors Game</title> </head> <body> <h1> Roc

(第二页)这是一个石头剪刀游戏,包含图像…图像在用户输入(石头、剪刀或布)后显示,但通常是这样的(输出=石头和纸的图像,然后它会说你赢了!而不是你输了!或者当它是平局时,什么都没有显示)
<!DOCTYPE html>
<html lang="en">
<head>
     <title>Rock Paper Scissors Game</title>
</head>
<body>
<h1> Rock Paper Scissors Game</h1>
$playerthrows=$\u POST['playerthrows'];
$Choosefrom=数组('rock'、'paper'、'Scissor');
$Choice=兰特(0,2);
$Computer=$Choosefrom[$Choice];
如果($playerthrows=='rock')
{
回声';
}
如果($playerthrows=='paper')
{
回声';
}
如果($playerthrows==‘剪刀’)
{
回声';
}
如果($Computer==0)
{
回声';
}
如果($Computer==1)
{
回声';
}
如果($Computer==2)
{
回声';
}
我把if的陈述搞砸了吗

        $playerthrows = $_POST['playerthrows'];
        $Choosefrom= array('rock', 'paper', 'scissors');
        $Choice= rand(0,2);
        $Computer=$Choosefrom[$Choice];


if($playerthrows == 'rock')
    {
    echo '<img src="rock1.png" alt="rock" />';
    }

    if($playerthrows == 'paper')
    {
    echo '<img src="paper1.png" alt="paper" />';
    }

    if($playerthrows == 'scissors')
    {
    echo '<img src="scissors1.png" alt="scissors" />';
    }

    if($Computer == 0)
    {
        echo '<img src="paper2.png" alt="paper" />'; 
    }
    if($Computer == 1)
    {
    echo '<img src="scissors2.png" alt="scissors" />'; 
    }

    if($Computer == 2)
    {
    echo '<img src="rock2.png" alt="rock" />'; 
    }
if($playerthrows==$Computer)
{
回声“
”; 回音‘画’; } 如果($playerthrows='rock'&&$Computer==1),则为else { 回声“
”; “你赢了!”; } 如果($playerthrows='rock'&&$Computer==0),则为else { 回声“
”; 回声“你输了!”; } 否则如果($playerthrows=='scissors'&&$Computer==2) { 回声“
”; 回声“你输了!”; } 如果($playerthrows='scissors'&&$Computer==0) { 回声“
”; “你赢了!”; } 如果($playerthrows='paper'&&$Computer==2),则为else { 回声“
”; “你赢了!”; } 如果($playerthrows='paper'&&$Computer==1),则为else { 回声“
”; 回声“你输了!”; } ?>
在您的数组中
$Choosefrom
您将其声明为
数组(“石头”、“布”、“剪刀”)

但在你的情况下,它被称为
array('paper'、'剪刀'、'rock')
,这使得结果是错误的

应该是

    if ($playerthrows == $Computer)
    {
    echo'<br />';
    echo 'Draw.';
    }
    else if($playerthrows == 'rock' && $Computer == 1 )
    {
    echo'<br />';
    echo 'You Win!';
    }
    else if($playerthrows == 'rock' && $Computer == 0 )
    {
    echo'<br />';   
    echo  'You Lose!';
    }
    else if($playerthrows == 'scissors' && $Computer == 2 )
    {
    echo'<br />';   
    echo  'You Lose!';
    }
    else if($playerthrows == 'scissors' && $Computer == 0 )
    {
    echo'<br />';   
    echo 'You Win!';
    }
    else if($playerthrows == 'paper' && $Computer == 2 )
    {
    echo'<br />';   
    echo 'You Win!';
    }
    else if($playerthrows == 'paper' && $Computer == 1 )
    {
    echo'<br />';   
    echo 'You Lose!';
    }



?>
</body>
</html>
if($Computer==0)
{
回声';
}
如果($Computer==1)
{
回声';
}
如果($Computer==2)
{
回声';
}
此外,您应该将单词放入$Computer的if-else条件中,而不是它们的索引号中

e、 g。
else if($playerthrows=='rock'和&$Computer=='paper')
每当我看到大量的
if
条件(或大型重复开关盒块),我通常会发现更精简/更干净的解决方案是将逻辑转换为“查找”数组。这将使您的代码更加精简、易于阅读和修改。这是“不要重复你自己”手册中的一页

代码:()

$\u POST['playerthrows']='rock';
美元人道主义成果=[
“纸”=>[“纸”=>“画”、“石头”=>“赢”、“剪刀”=>“输”],
“石头”=>[“石头”=>“画”、“剪刀”=>“赢”、“纸”=>“输”],
“剪刀”=>[“剪刀”=>“画”、“纸”=>“赢”、“石头”=>“输”]
];
如果(!isset($_POST['playerthrows'])| |!在数组($_POST['playerthrows'])中,数组键($humanoutcouts))){
echo“哦,您没有抛出有效的选项。请重试。”;
}否则{
$playerthrows=$_POST['playerthrows'];
$computerthrows=array\u rand($humanoutcouts);
echo“您抛出:\n”;
echo“计算机抛出:\n”;
回应“你{$humanoutlows[$playerthrows][$computerthrows]}”;
}
可能的产出:

$_POST['playerthrows']='rock';
$humanoutcomes=[
    'paper'=>['paper'=>'Draw','rock'=>'Win','scissors'=>'Lose'],
    'rock'=>['rock'=>'Draw','scissors'=>'Win','paper'=>'Lose'],
    'scissors'=>['scissors'=>'Draw','paper'=>'Win','rock'=>'Lose']
];
if(!isset($_POST['playerthrows']) || !in_array($_POST['playerthrows'],array_keys($humanoutcomes))){
    echo "Ooops, you didn't throw a valid option.  Try again.";
}else{
    $playerthrows=$_POST['playerthrows'];
    $computerthrows=array_rand($humanoutcomes);

    echo "You threw: <img src=\"{$playerthrows}1.png\" alt=\"{$playerthrows}\" />\n";
    echo "Computer threw: <img src=\"{$computerthrows}2.png\" alt=\"{$computerthrows}\" />\n";
    echo "You {$humanoutcomes[$playerthrows][$computerthrows]}";
}
您抛出了:
计算机投掷:
你输了

当您
var\u dump
变量
$playerthrows
$Computer
时会发生什么?它们是你期望的吗?表格在哪里?编辑哦,我知道你还没有回复@David的评论,所以我也会随大流。我很抱歉,我的错……是的,变量是我希望它们能告诉你的,文本没有出现的问题已经消失了,但它仍然没有正确的陈述回应。你能给出一个陈述显示不正确的示例吗?:)抱歉,但您的意思是什么,同时请确保
$Computer
的值正确<代码>[0]=>“石头”,
[1]=>“纸”
[2]=>“剪刀”
您输入了什么,计算机返回了什么,结果是什么。诸如此类
$_POST['playerthrows']='rock';
$humanoutcomes=[
    'paper'=>['paper'=>'Draw','rock'=>'Win','scissors'=>'Lose'],
    'rock'=>['rock'=>'Draw','scissors'=>'Win','paper'=>'Lose'],
    'scissors'=>['scissors'=>'Draw','paper'=>'Win','rock'=>'Lose']
];
if(!isset($_POST['playerthrows']) || !in_array($_POST['playerthrows'],array_keys($humanoutcomes))){
    echo "Ooops, you didn't throw a valid option.  Try again.";
}else{
    $playerthrows=$_POST['playerthrows'];
    $computerthrows=array_rand($humanoutcomes);

    echo "You threw: <img src=\"{$playerthrows}1.png\" alt=\"{$playerthrows}\" />\n";
    echo "Computer threw: <img src=\"{$computerthrows}2.png\" alt=\"{$computerthrows}\" />\n";
    echo "You {$humanoutcomes[$playerthrows][$computerthrows]}";
}
You threw: <img src="rock1.png" alt="rock" />
Computer threw: <img src="paper2.png" alt="paper" />
You Lose