#php #arrays
#php #массивы
Вопрос:
Какой из них вы бы использовали?
По сути, я хочу получить только 1-й элемент из массива, вот и все.
Комментарии:
1. Ничего из вышеперечисленного.
$first = reset($array);
это то, что вы хотите. Будет работать правильно независимо от того, что вы на него бросаете.2. @Jon: Я уже говорил об этом. 🙂
3. @Tomalakgeret’kal: Так … мне тогда удалить комментарий?
4. @Jon: Нет, сейчас это бесполезно. Этот вопрос в любом случае усеян повторяющимися ответами.
Ответ №1:
Ну, они делают разные вещи.
-
array_shift($arr)
извлекает первый элемент из массива и передает его вам. -
$arr[0]
просто дает его вам … если в массиве есть цифровые ключи.
Альтернатива, которая работает и для ассоциативных массивов reset($arr)
. Это перемещает внутренний указатель массива, но если вы не используете эти функции, это вряд ли повлияет на вас.
Ответ №2:
array_shift
фактически удалит указанное значение из массива. Не используйте его, если вы действительно не хотите уменьшить массив!
Смотрите здесь: http://php.net/manual/en/function .array-shift.php
Ответ №3:
Вы бы использовали $arr[ 0 ];
array_shift
удаление первого элемента из массива.
Редактировать
Этот ответ на самом деле находится где-то между неполным и явно неправильным, но, поскольку комментарии двух jon
, я думаю, что он должен оставаться в силе, чтобы другие могли видеть этот дискурс.
Правильный ответ:
reset
это метод для возврата первого определенного индекса массива. Даже в неассоциативных массивах это может быть не0
индекс.array_shift
удалит и вернет значение, которое найдено вreset
OP сделал предположение, что $arr[0]
первый индекс не является точным в этом конкретном контексте.
Комментарии:
1. числовой / ассоциативный комментарий, который я видел из всех других, очень важен
2. Исходя из вопроса, ассоциативный массив не является проблемой. Если вы
only want to get the 1st element from a array, that's it.
, то этот ответ правильный, если не самый полный.3. это не мой вопрос, и
1st element of an array
иarr[0]
/element with index zero
не эквивалентны в PHP4. Нет, это не так, но я прочитал вопрос, похожий на: «Учитывая выбор между клубникой и фисташками, скажите, какое ваше любимое мороженое». Правильный ответ — ни то, ни другое (большой поклонник чизкейка). Но, предполагая, что я работаю в рамках этих вариантов, я бы выбрал strawberry .
5. -1: Согласен с jon_darkstar. И мне бы очень хотелось услышать, как бы вы обосновали, что
$arr[0]
это все еще неправильно работаетarray(1 => 1, 0 => 0)
.
Ответ №4:
$arr[0]
работает только в том случае, если массив в виде цифровых ключей.
array_shift
удаляет элемент из массива и изменяет сам массив.
Если вы не уверены, что такое первый ключ, и вы не хотите удалять его из массива, вы можете использовать:
<?php
foreach($arr $k=>$v){
$value = $v;
break;
}
или даже лучше:
<?php
reset($arr);
$value = current($arr);
Ответ №5:
Если у вас есть ассоциативный массив, вы также можете использовать reset($arr)
: он возвращает первый элемент (не удаляет) и устанавливает указатель массива на этот элемент.
Но самый быстрый способ $arr[0]
.
Ответ №6:
Вы также хотите изменить arr
массив? array_shift
удаляет первый элемент массива и возвращает его, таким образом, массив изменился. $arr[0]
просто дает вам первый элемент.
Я бы использовал $arr[0]
, если бы явно не хотел изменить массив. Позже вы можете добавить код для использования arr
массива и забыть, что он был изменен.
Ответ №7:
учитывая, что вам нужно, $arr[0] предпочтительнее, потому что это быстрее. array_shift используется в других ситуациях.
Ответ №8:
arrshift более надежен и всегда возвращает первый элемент в массиве, но это также изменяет массив, удаляя этот элемент.
arr[0] завершится ошибкой, если ваш массив не начинается с индекса 0, но оставляет сам массив в покое.
Более сложный, но надежный метод:
$keys = array_keys($arr);
$first = $arr[$keys[0]];
Ответ №9:
с array_shif у вас есть две операции:
- восстановите первый элемент
- сдвинуть массив
если вы получаете доступ по индексу, на самом деле у вас есть только одна операция.
Ответ №10:
Если вам нужен первый элемент массива, используйте форму $arr[0] . Преимущества — Простота, удобочитаемость и удобство обслуживания. Продолжайте в том же духе.
Редактировать: используйте индекс 0, только если вы знаете, что массив имеет ключи по умолчанию, начинающиеся с 0.
Комментарии:
1. А также возможность прерывания для множества возможных входных данных, например
array('foo' => 'bar')
, илиarray(1 => 1, 0 => 0)
.2. Если вы подумаете об этом, ваш ответ теперь выглядит следующим образом: Чтобы прочитать первый элемент
$arr
, используйте$arr[0]
. Однако это можно сделать, только если первый элемент имеет ключ0
. Это может и не вводить в заблуждение, но не совсем полезно. Почему бы не сделать это полезным? 🙂
Ответ №11:
Если вы не хотите изменять рассматриваемый массив, используйте $arr[0]
(который просто получает первый элемент), в противном случае, если вы хотите удалить первый элемент $arr
from $arr
, используйте array_shift($arr)
.
Например:
$arr=array(3,-6,2);
$foo=$arr[0]; //$foo==3 and $arr==array(3,-6,2).
$bar=array_shift($arr); //$bar==3 and $arr==array(-6,2).
ETA: Как указывали другие, убедитесь, что ваш массив не является ассоциативным массивом (т. Е. Ключи равны 0,1, …, (sizeof($arr)-1)
), Иначе это, вероятно, не сработает.