2012-04-27 19 views
0

私は、PHPでは値の代わりに配列のインデックスを出力する2次元配列を持っています。PHP 2次元配列は値の代わりにインデックスを出力します

ここで私はアレイを設定します。

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]   

お返事ありがとうございます。

+0

Alaxあなたは$ _POST配列が含まれているものを私に示してくださいますない1つのループが必要ですか? –

+0

$ _POSTには文字列が含まれています。 –

答えて

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]}\")"); 
+0

それはそれをしました!本当にありがとう。その構文は具体的に何ですか? –

+0

@AlexOulapour内部ですべてを変数式として定義します。また、コードを読みやすくします。それ以外の場合、PHPはあなたが意味することを知ることができません"on $ date [昨日]"私は怠け者でした "とは、2つのことを意味することができます:1.変数$ fooを '昨日'の前に挿入するか、2.変数式$ date [昨日]を検索します。デフォルトの動作は1です。正しい構文で – Kaii

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]."')"); 
       } 
      } 

動作しない文字列の配列をインラインで使用して:あなたの変数式の周りの中括弧は、パーサがそれを正しく扱うことを確認してください。 これは文字列、数値などでの​​み機能します。

オブジェクトと配列については、分割する必要があります。私が代わりに\」

よろしくの 'を使用し、読みやすさのために

、 STEFAN

+0

です。 – Kaii

+0

と私は肯定的な投票でそれを知った –

0

SQLのための二重引用符"を使用しないでくださいA.は、単一引用符'

B.それは効率的ではない重複を使用SQLループ内の文

C. \"$criteriaID[$i]\"は、PHPの配列変数にアクセスする無効な方法です

D.あなただけの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])); 

    } 
} 
関連する問題