Php $ _GET проблема - PullRequest
       45

Php $ _GET проблема

0 голосов
/ 17 сентября 2008
foreach ($_GET as $field => $label)
{
   $datarray[]=$_GET[$field];
   echo "$_GET[$field]";
   echo "<br>";
}
print_r($datarray);

Это вывод, который я получаю. Я вижу, что данные есть в datarray, но когда Я echo $_GET[$field]

Я получаю только "Массив"

Но print_r($datarray) печатает все данные. Есть идеи, как мне получить эти значения?

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

Ответы [ 8 ]

1 голос
/ 17 сентября 2008

РЕДАКТИРОВАТЬ: Когда я закончил ваш тест, здесь был последний 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.

1 голос
/ 17 сентября 2008

Используйте 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"
0 голосов
/ 17 сентября 2008

Он печатает просто «Массив», потому что, когда вы говорите

 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 в другой массив?

0 голосов
/ 17 сентября 2008

Попробуйте это:

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);
0 голосов
/ 17 сентября 2008

Похоже, ваш аргумент GET сам по себе является массивом. Было бы полезно иметь как вход, так и выход.

0 голосов
/ 17 сентября 2008

вызов echo для массива всегда выдает «Array». print_r (из руководства по PHP) печатает понятную человеку информацию о переменной.

0 голосов
/ 17 сентября 2008

Возможно, переменные GET сами являются массивами? т.е. http://site.com? var [] = 1 & var [] = 2

0 голосов
/ 17 сентября 2008

Используйте <pre> теги до print_r, тогда у вас будет напечатано дерево (или просто посмотрите на источник. С этого момента вы будете иметь четкое представление о том, каков ваш массив, и сможете получить значение ты хочешь.

Я предлагаю продолжить чтение по $_GET переменным и массивам , для лучшего понимания его значений

...