0

$ _POSTからいくつかの情報を取得する配列($ form)があります。

$form = $_POST['game'];

ここで、この配列の値を操作したいのですが、どういうわけか失敗します。

デバッグには、次のコマンドを使用しました(まったく同じ順序で、間に余分な行はありません)。

print_r($form);
echo '#' . $form['System_ID'] . "#";

返される出力として、次のようになります。

Array
(
    ['Title'] => Empire: Total War - Special Forces
    ['Genre_ID'] => 1
    ['Type'] => Spiel
    ['System_ID'] => 1
)
##

私のSystem_IDがどこに行ったのかアイデアはありますか?print_rにはありますが、echoの次の行にはありませんか?!?

4

3 に答える 3

8

了解しました。自分で解決策を見つけました(別名d'oh!)

別に追加しました

var_dump($form);

さらなる分析のために、これは私が得たものです:

array(4) {
  ["'Title'"]=>
  string(34) "Empire: Total War - Special Forces"
  ["'Genre_ID'"]=>
  string(1) "1"
  ["'Type'"]=>
  string(5) "Spiel"
  ["'System_ID'"]=>
  string(1) "1"
}

二重引用符内の一重引用符に注意してください。

htmlフォームで一重引用符を使用することは許可されていないように見えます。そうしないと、配列キーに含まれます。

Wrong: <input type="text" name="game['Title']" />
Correct: <input type="text" name="game[Title]" />
于 2009-04-09T09:28:19.410 に答える
3

print_r()はキーを引用符で囲みません-デバッグのために、print_rを完全に削除することをお勧めします。var_exportまたはvar_dumpの方が優れています。

さらに良い:firephpを使用します。ヘッダーを介してデバッグ情報を送信するため、出力を混乱させることはなく、ajaxでも使用できます。出力は、データ構造の構文の色付けを含むFirebugでうまく表示されます。

そしてそれはさらに使いやすいです:ちょうどfb($myvar);

于 2009-04-09T09:52:01.350 に答える
-1

わたしにはできる:

<?
  $form['System_ID'] = 1;
  print_r($form);
  echo '#' . $form['System_ID'] . '#';
?>

出力:

% php foo.php
Array
(
    [System_ID] => 1
)
#1#

PHP 5.2.6、FedoraCore10上

編集-ここに本当の原因へのヒントがあることに注意してください。私のコードでは、print_r出力は(正しく)配列キーを一重引用符なしで示しています。元のポスターのキーの出力には引用符が含まれてprint_rました。これは、実際のキーに引用符が含まれていることを示しています。

于 2009-04-09T09:24:43.507 に答える