質問

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 は次のとおりでした。

http://hofstrateach.org/Roberto/process.php?keys=Grade1&keys=Nathan&keys=North%20America&keys=5&keys=3&keys=no&keys=foo&keys=blat&keys=0%3A0%3A24

これはおそらく不正な形式の URL です。クエリで重複したキーを渡すと、PHP はそれらを配列にします。上記の URL はおそらく次のようになります。

http://hofstrateach.org/Roberto/process.php?grade=Grade1&schoolname=Nathan&region=North%20America&answer[]=5&answer[]=3&answer[]=no&answer[]=foo&answer[]=blat&time=0%3A0%3A24

これにより、ほとんどのフィールドに個別のエントリが作成され、$_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 マニュアルより) は、変数に関する人間が読める形式の情報を出力します。

使用 <pre> 前のタグ print_r, そうすると、ツリーが表示されます (または、ソースを見てください。この時点から、配列がどのようになっているのかを明確に理解し、必要な値を取得できるようになります。

さらに読み進めることをお勧めします $_GET 変数と 配列, 、その価値をより深く理解するために

これを試して:

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 引数自体が配列であるようです。アウトプットだけでなくインプットもできると便利です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top