PHP二维数组打印索引而不是值

时间:2012-04-27 07:43:17

标签: php mysql

我在PHP中有一个二维数组,它打印数组的索引而不是值。

这是我设置数组的地方。

for($i = 1;$i <= $numOfCriteria;$i++)
            {
                for($j = 1;$j <= $numOfScores;$j++)
                {
                    $description[$i][$j] = mysql_real_escape_string($_POST['descriptionPosition'.$i.$j]);
                }
            }

这是SQL查询。

for($i = 1;$i <= $numOfCriteria;$i++)
            {
                for($j = 1;$j <= $numOfScores;$j++)
                {
                    $this->Instructor->query("INSERT INTO Criteria_Description (description,CriteriaID,ScoreID) VALUES (\"$description[$i][$j]\",\"$criteriaID[$i]\", \"$scoreID[$j]\")");
                }
            }

这就是数据库中的内容。

            Array[1]        
            Array[2]        
            Array[1]        
            Array[2]        

感谢您提前回复。

3 个答案:

答案 0 :(得分:2)

这是因为PHP的解析器无法正确识别字符串中的多个数组索引。

如果您尝试这样做:

<?php
$foo = array(array(array("bar")));
echo "wrong: \"$foo[0][0][0]\"" . PHP_EOL;
echo "right: \"{$foo[0][0][0]}\"" . PHP_EOL;

你会意识到:

wrong: "Array[0][0]"
right: "bar"

要解决此问题,请按照上面的说明使用"{$var}"语法。变量表达式周围的花括号可确保解析器正确处理它:

$this->Instructor->query("INSERT INTO Criteria_Description (description,CriteriaID,ScoreID) VALUES (\"{$description[$i][$j]}\",\"{$criteriaID[$i]}\", \"{$scoreID[$j]}\")");

答案 1 :(得分:0)

for($i = 1;$i <= $numOfCriteria;$i++)
            {
                for($j = 1;$j <= $numOfScores;$j++)
                {
                    $this->Instructor->query("INSERT INTO Criteria_Description (description,CriteriaID,ScoreID) VALUES ('".$description[$i][$j]."','".$criteriaID[$i]."', '".$scoreID[$j]."')");
                }
            }

在字符串中使用内联数组不起作用。 它只适用于字符串,数字等。

对于对象和数组,您可以将其拆分。

为了便于阅读,我使用了&#39;而不是\&#34;

此致 STEFAN

答案 2 :(得分:0)

一个。不要对SQL使用双引号"使用单引号'

B中。它不是一个循环中有效的重复SQL语句

℃。 \"$criteriaID[$i]\"是在PHP中访问数组变量的无效方法

d。你只需要1个循环而不是2个

$sql = "INSERT INTO Criteria_Description (description,CriteriaID,ScoreID) VALUES ('%d','%s', '%d')";
for($i = 1; $i <= $numOfCriteria; $i ++) {
    for($j = 1; $j <= $numOfScores; $j ++) {
        $this->Instructor->query ( sprintf ( $sql, mysql_real_escape_string ( $_POST ['descriptionPosition' . $i . $j] ), $criteriaID [$i], $scoreID [$j] ) );

    }
}