Невозможно ли доступ к элементам в ассоциативных массивах PHP численно (то есть по индексу)?

Я пытаюсь понять, почему на моей странице с строкой запроса код:

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