Я пытаюсь понять, почему на моей странице с строкой запроса код:
echo "Item count = " . count($_GET); echo "First item = " . $_GET[0];
Результаты в:
Количество предметов = 3 Первый элемент =
Являются ли ассоциативные массивы PHP отличными от числовых массивов, так что их элементы не могут быть доступны индексом? Благодаря-
Они не могут. Когда вы индексируете значение по его ключу / индексу, оно должно точно соответствовать.
Если вы действительно хотели использовать числовые клавиши, вы можете использовать array_values()
в $_GET
, но вы потеряете всю информацию о ключах. Вы также можете использовать array_keys()
для получения ключей с числовыми индексами.
В качестве альтернативы, как говорит Фил , вы можете reset()
внутренний указатель, чтобы получить первый. Вы также можете получить последнее с end()
. Вы также можете array_pop()
или перемещать с помощью array_pop()
и array_shift()
, которые возвращают значение после изменения массива.
Да, ключ элемента массива – это целое число (не должно начинаться с 0) или ассоциативный ключ, а не оба.
Вы можете получить доступ к элементам либо с помощью цикла, как это:
foreach ($_GET as $key => $value) { }
Или получить значения в виде числового массива, начиная с ключа 0 с помощью функции array_values()
или получить первое значение с помощью reset()
.
Вы можете сделать это следующим образом:
$keys = array_keys($_GET); echo "First item = " . $_GET[$keys[0]];
Нет, это невозможно.
Попробуй это:
file.php?foo=bar
file.php
:
<?php print_r($_GET); ?>
Вы получаете
Array ( [foo] => bar )
Если вы хотите получить доступ к элементу в 0, попробуйте file.php?0=foobar
.
Вы также можете использовать foreach
или for
loop и просто ломаться после первого элемента (или любого другого элемента, которого вы хотите достичь):
foreach($_GET as $value){ echo($value); break; }
Нет – они сопоставляются парами значений ключа. Вы можете повторить их пару KV в индексированный массив:
foreach($_GET as $key => $value) { $getArray[] = $value; }
Теперь вы можете получить доступ к значениям по индексу в $ getArray.
Как еще один странный способ обхода, вы можете получить доступ к самому первому элементу, используя:
print $_GET[key($_GET)];
Это использует внутренний указатель массива, такой как reset / end / current (), может быть полезен в each()
цикле each()
.