Php $_GET の問題
質問
foreach ($_GET as $field => $label)
{
$datarray[]=$_GET[$field];
echo "$_GET[$field]";
echo "<br>";
}
print_r($datarray);
これが私が得ている出力です。データがデータレイにあるのはデータがありますが、 echo $_GET[$field]
「配列」しか得られません
しかし print_r($datarray)
すべてのデータを印刷します。これらの値を取得する方法はわかりますか?
出力
Array (
[0] => Array (
[0] => Grade1
[1] => ln
[2] => North America
[3] => yuiyyu
[4] => iuy
[5] => uiyui
[6] => yui
[7] => uiy
[8] => 0:0:5
)
)
解決
編集:テストを完了したときの最終 URL は次のとおりでした。
これはおそらく不正な形式の URL です。クエリで重複したキーを渡すと、PHP はそれらを配列にします。上記の URL はおそらく次のようになります。
これにより、ほとんどのフィールドに個別のエントリが作成され、$_GET['answer'] がユーザーが提供した回答の配列になります。
結論:Flash ファイルを修正してください。
他のヒント
使用 var_export($_GET)
取得している配列の種類をより簡単に確認できます。
スクリプトの出力から、複数の入れ子になった配列があることがわかります。それは次のようなもののようです:
$_GET = array( array( array("Grade1", "ln", "North America", "yuiyyu", "iuy", "uiyui", "yui","uiy","0:0:5")))
したがって、これらの変数を取得するには、次のようなものが必要です。
echo $_GET[0][0][0]; // => "Grade1"
配列に対して echo を呼び出すと、常に「Array」が出力されます。print_r (PHP マニュアルより) は、変数に関する人間が読める形式の情報を出力します。
これを試して:
foreach ($_GET as $field => $label)
{
$datarray[]=$_GET[$field];
echo $_GET[$field]; // you don't really need quotes
echo "With quotes: {$_GET[$field]}"; // but if you want to use them
echo $field; // this is really the same thing as echo $_GET[$field], so
if($label == $_GET[$field]) {
echo "Should always be true<br>";
}
echo "<br>";
}
print_r($datarray);
あなたが言うとき、それは単に「配列」を印刷しています
echo "$_GET[$field]";
PHP はあなたが何を意味しているのかを知ることができません $_GET
要素 $field
, 、変数を印刷したいと見なされます $_GET
. 。それで、それを出力しようとします、そしてもちろんそれは配列なので、それが得られるものです。一般に、配列要素をエコーしたい場合は、次のようにします。
echo "The foo element of get is: {$_GET['foo']}";
中括弧は、全体が解釈する必要がある変数であることを PHP に伝えます。それ以外の場合は、変数名が $_GET
それ自体で。
あなたの場合、それは必要ありませんが、必要なのは次のとおりです。
foreach ($_GET as $field => $label)
{
$datarray[] = $label;
}
印刷したい場合は、次のようにしてください
echo $label; // or $_GET[$field], but that's kind of pointless.
問題はフラッシュ ファイルにありませんでした。ファイルを元の状態に戻します。$dataarray 変数にはすべてのデータが含まれているため、それが正しいことがわかります。データを抽出する理由 $_GET
とにかく別の配列に入れますか?
おそらく GET 変数自体が配列なのでしょうか?つまり http://site.com?var[]=1&var[]=2
GET 引数自体が配列であるようです。アウトプットだけでなくインプットもできると便利です。