如何在php中测试数组的索引是否与数组的另一个索引相等?

时间:2014-04-20 02:16:20

标签: php arrays indexing equality

我想测试一个数组的特定索引是否等于另一个数组中的另一个特定索引,但即使两个索引相等也总是为假。

<!DOCTYPE html>
<html>
<head><title>PHP Written Test</title></head>
<body>
<?php include 'variables.php';?>
<?php include 'functions.php';?>
<?php

session_start();
$x = 1;
$y = 0;

while ($x <= 20)
{   
    $a = $_POST["question" . $x];
    $b = $_SESSION['correct'][$y];

    if ($a == $b)
    {
        echo "The answer was correct " . "<br><br>";
    }
    else
    {
        echo "The answer was wrong<br><br>";
    }
    echo "The user answer is: " . $a . "<br>";
    echo "The correct answer is: " . $b  . "<br><br>";
    $x++;
    $y++;
}
?>
</body>
</html> 

它输出总是错误我不明白为什么这不起作用

The answer was wrong

The user answer is: Software programs that can compose, send, and receive email messages
The correct answer is: A service that allows users to send messages and/or documents to each other over an internet network

The answer was wrong

The user answer is: Click the refresh button
The correct answer is: Click the refresh button

The answer was wrong

The user answer is: A copy of the email sent to the recipient emailed to you
The correct answer is: A copy of the email sent to the recipient emailed to you

The answer was wrong

The user answer is: Software enabling the user to organize emails
The correct answer is: A tool used to lookup information on the internet

The answer was wrong

The user answer is: A location that stores saved files and programs
The correct answer is: A location that stores saved files and programs

The answer was wrong

The user answer is: A program that lets your organize data into databases
The correct answer is: A utility program used for managing processes and programs running on the computer

The answer was wrong

The user answer is: A program that infects a computer, copies itself many times using up system resources, and spreads the infection to other computers
The correct answer is: An important part of systems files. It manages the interaction between the user, application programs, and hardware

The answer was wrong

The user answer is: GPU
The correct answer is: CPU

The answer was wrong

The user answer is: Icons
The correct answer is: Icons

The answer was wrong

The user answer is: Composing a new email message and sending it
The correct answer is: Impersonating someone with a similar email address and trying to obtain sensitive information from the recipient

The answer was wrong

The user answer is: Menu Bar
The correct answer is: Address Bar

The answer was wrong

The user answer is: The home page
The correct answer is: The home page

The answer was wrong

The user answer is: Motherboard
The correct answer is: Keyboard

The answer was wrong

The user answer is: Programs that intend to damage a users data and system files or allow an outside attacker to gain access to the computer and steal data
The correct answer is: Programs that intend to damage a users data and system files or allow an outside attacker to gain access to the computer and steal data

The answer was wrong

The user answer is: The message itself
The correct answer is: The 'To' line

The answer was wrong

The user answer is: Desktop
The correct answer is: Computer

The answer was wrong

The user answer is: Internet Explorer
The correct answer is: Internet Explorer

The answer was wrong

The user answer is: User ID, @ symbol, host name
The correct answer is: User ID, @ symbol, host name

The answer was wrong

The user answer is: Explorer
The correct answer is: Explorer

The answer was wrong

The user answer is: Shortcut
The correct answer is: Taskbar

2 个答案:

答案 0 :(得分:0)

我做了Sean建议和使用的if(trim($ a)== trim($ b))它解决了我的问题。

答案 1 :(得分:0)

  

但即使两个索引相等也总是假的

然后这两个索引不相等,要么是因为它们 不同,要么你的脚本错误(即没有正确检查)。

如果PHP声明某些内容为FALSE,那么它就是FALSE,即使由于PHP的工作方式(例如==和===之间的差异),它也是一些模糊或未知的东西。

我无法直接回答您的问题,因为我看不到您的会话所持有的原始数据,而是帮助您排除故障(此脚本和将来的脚本):

我通过你的例子看到你:

  

用户回答是:点击刷新按钮
  正确答案是:单击刷新按钮

它们看起来一样,但PHP并没有将它们解释为相同 是来自数据库的一个数据和来自用户输入的另一个数据 - 例如,它们是相同的吗?

检查源代码并比较两者。突出显示文本,某处可能有胭脂空间。

var_dump()您的会话并比较数据。

在你的循环中手动设置$a$b(而不是会话等),同一个字符串(即它们匹配),看看你是否得到TRUE,即20“答案是真的”。

如果是这样,您的脚本,循环和IF正在处理会话数据的点 然后仔细检查会话数据 检查源代码并再次比较两者。

回显所有内容,检查PHP 实际所拥有的数据,而不是它最终在屏幕上输出的内容,而不是它认为的内容。

有一些不同的东西,你只需要找到它。