Вопрос

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

Это результат, который я получаю.Я вижу, что данные есть в 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['ответ'] массивом ответов, предоставленных пользователем.

Нижняя граница:исправьте свой 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