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



>我在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]        

提前感谢您的任何回复。

这是因为 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]}")");
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]."')");
                }
            }

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

对于对象和数组,您必须将其拆分。

为了可读性,我使用了'而不是\"

问候斯特凡

A. 不要使用双引号 " 对于 SQL 使用单引号 '

二.循环中的语句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] ) );
    }
}

最新更新