Php $_GET issue

foreach ($_GET as $field => $label)
{
   $datarray[]=$_GET[$field];
   echo "$_GET[$field]";
   echo "<br>";
}
print_r($datarray);

This is the output I am getting. I see the data is there in datarray but when I echo $_GET[$field]

I only get "Array"

But print_r($datarray) prints all the data. Any idea how I pull those values?

OUTPUT
Array ( 
        [0] => Array ( 
                 [0] => Grade1 
                 [1] => ln 
                 [2] => North America 
                 [3] => yuiyyu 
                 [4] => iuy 
                 [5] => uiyui 
                 [6] => yui 
                 [7] => uiy 
                 [8] => 0:0:5 
                 ) 
)

Answers


EDIT: When I completed your test, here was the final 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

This is probably a malformed URL. When you pass duplicate keys in a query, PHP makes them an array. The above URL should probably be something like:

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

This will create individual entries for most of the fields, and make $_GET['answer'] be an array of the answers provided by the user.

Bottom line: fix your Flash file.


Use var_export($_GET) to more easily see what kind of array you are getting.

From the output of your script I can see that you have multiple nested arrays. It seems to be something like:

$_GET = array( array( array("Grade1", "ln", "North America", "yuiyyu", "iuy", "uiyui", "yui","uiy","0:0:5")))

so to get those variables out you need something like:

echo $_GET[0][0][0]; // => "Grade1"

calling echo on an array will always output "Array". print_r (from the PHP manual) prints human-readable information about a variable.


Use <pre> tags before print_r, then you will have a tree printed (or just look at the source. From this point you will have a clear understanding of how your array is and will be able to pull the value you want.

I suggest further reading on $_GET variable and arrays, for a better understanding of its values


Try this:

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);

It's printing just "Array" because when you say

 echo "$_GET[$field]";

PHP can't know that you mean $_GET element $field, it sees it as you wanting to print variable $_GET. So, it tries to print it, and of course it's an Array, so that's what you get. Generally, when you want to echo an array element, you'd do it like this:

echo "The foo element of get is: {$_GET['foo']}";

The curly brackets tell PHP that the whole thing is a variable that needs to be interpreted; otherwise it will assume the variable name is $_GET by itself.

In your case though you don't need that, what you need is:

foreach ($_GET as $field => $label)
{
    $datarray[] = $label;
}

and if you want to print it, just do

echo $label; // or $_GET[$field], but that's kind of pointless.

The problem was not with your flash file, change it back to how it was; you know it was correct because your $dataarray variable contained all the data. Why do you want to extract data from $_GET into another array anyway?


Perhaps the GET variables are arrays themselves? i.e. http://site.com?var[]=1&var[]=2


It looks like your GET argument is itself an array. It would be helpful to have the input as well as the output.


Need Your Help

Shadows vs Overloads in VB.NET

.net vb.net oop overloading shadows

When we have new in C#, that personally I see only as a workaround to override a property that does not have a virtual/overridable declaration, in VB.NET we have two "concepts" Shadows and Overload...

Android release APK crash with java.lang.AssertionError: impossible in java.lang.Enum

android gradle proguard android-gradle

I've just built an APK using Gradle for release (ProGuard 4.9 and signed). When I launch the app it crash on this error :