Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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
Can';不能让数组在PHP中工作_Php_Arrays_For Loop - Fatal编程技术网

Can';不能让数组在PHP中工作

Can';不能让数组在PHP中工作,php,arrays,for-loop,Php,Arrays,For Loop,因此,我在这里的代码有问题: $answerString = $_GET['answers']; $questionsString = $_GET['questions']; $question = array(); $answer = explode(',', $answerString); $question = explode(',', $questionsString); $score = 0; for($index = 0; $index <= 9; $index++

因此,我在这里的代码有问题:

$answerString = $_GET['answers'];

$questionsString = $_GET['questions'];

$question = array();

$answer = explode(',', $answerString);

$question = explode(',', $questionsString);

$score = 0;

for($index = 0; $index <= 9; $index++)
{
    $query = "SELECT * FROM questions WHERE id = '$question[$index]'";
    $result = mysql_query($query);
    $rows = mysql_fetch_array($result, MYSQL_ASSOC);

    $cans = $rows['answer'];
    $test = array($cans);
    $ans = array();
    foreach ($test as $correct){
    $ans[] = $correct;
    }
    print_r($ans);

            if($answer[$index] == $rows['answer'])
    {
        $score++;
    }

}
如果我替换了这些代码

$cans = $rows['answer'];
$test = array($cans);
$ans = array();
foreach ($test as $correct){
$ans[] = $correct;
进入这个

echo $rows['answer'];
然后它只需像这样打印所有数据:BCACABDDCB

如果有一种方法可以一次获得所有打印输出,那么我可以使用str_split来分割它们


我真的找不到这个问题的答案。提前谢谢各位。

你们走错了路。首先,你甚至没有一个明确的问题/答案和ID之间的关系。你应该解决这个问题

仅供参考,您可以使用
item[key]=value
语法在GET/POST中生成数组:

?answers[1]=B&answers[2]=C&answers[3]=A
等等


至于你的PHP。。。停止使用
mysql.*
函数。它们现在使用起来很可怕(就我个人而言,在我的一堂课上使用它们的任何学生我都会不及格)


停止使用
mysql.*
函数,查找SQL注入攻击。同意ceejayoz lookup PDO,了解转换需要几个小时左右,但SQL注入是安全的。@SyntaxLAMP不,它不安全。字符串插值不好。@SyntaxLAMP首先阅读上面的注释。内部foreach循环有什么意义?您从查询结果中获取单个值,强制它成为一个数组,然后在该单个项数组上循环,并将该单个项填充到另一个数组中。这完全是毫无意义的。我这么做了,但没能成功,因为我是mysql的初学者。
?answers[1]=B&answers[2]=C&answers[3]=A
<?php

// PDO object
$db = new PDO("mysql:localhost;dbname=database", $username, $password);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

// vars from HTTP
$answers = $_REQUEST['answers'];

// default vars
$score = 0;
$sql = "SELECT * FROM questions WHERE id = :id limit 1";

// here, we prepare the query above.
$query = $db->prepare($query);

foreach ($answers as $id => $answer) {

    $query->execute(array(":id" => $id));

    // make sure you have mysqlnd installed or anything
    // involving php and mysql is a nightmare anyway.
    $row = $query->fetch();
    $expected = $row["answer"];

    if ($answer === $expected)
        $score++;
}