Как получить первый элемент массива php
Перейти к содержимому

Как получить первый элемент массива php

  • автор:

Как получить первый элемент массива в PHP

Если вы знаете точный индекс или ключ массива, вы можете легко получить первый элемент, например:

 "Apple", "b" => "Ball", "c" => "Cat"); echo $fruits["a"]; // Выводит: Apple ?>

Однако есть определенные ситуации, когда вы не знаете точный индекс или ключ первого элемента. В этом случае вы можете использовать функцию array_values() , которая возвращает все значения из массива и индексирует массив численно, как показано в следующем примере:

 "Apple", 5 => "Ball", 11 => "Cat"); echo array_values($arr)[0]; // Выводит: Apple ?>

В качестве альтернативы вы также можете использовать функцию reset() для получения первого элемента.

Функция reset() устанавливает внутренний указатель массива на его первый элемент и возвращает значение первого элемента массива или FALSE , если массив пуст.

Вы также можете использовать функцию current() для получения первого элемента массива. Эта функция возвращает текущий элемент в массиве, который по умолчанию является первым элементом, если вы не переставили указатель массива, в противном случае используйте функцию reset() . Вот пример:

 "Apple", 5 => "Ball", 11 => "Cat"); echo current($arr); // Выводит: Apple echo reset($arr); // Выводит: Apple echo next($arr); // Выводит: Ball echo current($arr); // Выводит: Ball echo reset($arr); // Выводит: Apple ?>

etxt banner 480x320 smsc banner 480x320 skillbox banner 480x320

Читайте также

Похожие примеры:
  • Как извлечь подстроку из строки в PHP
  • Как объединить две строки в PHP
  • Как преобразовать строку в верхний регистр в PHP

Как получить первый элемент массива в php

Итак, у нас есть массив $arr и нужно получить первый элемент этого массива.

Нельзя просто сделать так:

$first = $arr[0];

Элемент с индексом 0 может быть просто не определен. Например в случае если массив ассоциативный, либо мы сделали unset($arr[0]) .

Способ 1

$first = reset($arr);

Используя reset мы получаем первый элемент, однако есть один побочный эффект: указатель массива также сбрасывается на первый элемент. Хотя в принципе эта функция и предназначена для сброса указателя. Документация по функции reset().

Обратите внимание: если массив пустой reset() вернет false , и этот результат будет неотличим от случая, когда массив не пустой, но содержит false в качестве первого элемента.

$a = array(); $b = array(false, true, true); var_dump(reset($a) === reset($b)); //bool(true)

Способ 2

Можно воспользоваться функцией array_shift — она извлекает первый элемент и при этом удаляет его из переданного массива. Документация по array_shift().

$first = array_shift($arr);

Способ 3

Написать свою функцию для этих целей:

function array_first($array, $default = null) < foreach ($array as $item) < return $item; >return $default; >

Преимущество в том, что она не меняет исходный массив. Также вы можете передать параметр $default , который будет использоваться в качестве значения по умолчанию, если массив пустой.

Кстати во фреймворке Laravel эта функция уже определена и позволяет указать еще и callback, в который можно передать условие. Можно например взять первый элемент, который больше 10 или первый элемент, который не является числом.

Вот код более совершенной функции:

function array_first($array, callable $callback = null, $default = null) if (is_null($callback)) < if (empty($array)) < return $default instanceof Closure ? $default() : $default; >foreach ($array as $item) < return $item; >> foreach ($array as $key => $value) < if (call_user_func($callback, $value, $key)) < return $value; >> return $default instanceof Closure ? $default() : $default; >

Ее можно использовать например так:

$array = [100, 200, 300]; $first = array_first($array, function ($value, $key) < return $value >= 150; >); echo $first; // 200

Способ 4

Функция current() также пригодна для получения первого элемента массива.
Пример использования:

$transport = array('foot', 'bike', 'car', 'plane'); $mode = current($transport); // $mode = 'foot';

Точнее эта функция используется для возвращения элемента, на котором находится внутренний указатель массива. В большинстве случаев указатель на первом элементе, однако есть ситуации, когда может быть возвращен не первый элемент.

$transport = array('foot', 'bike', 'car', 'plane'); next($transport); // перемещаем указатель вперед (http://php.net/manual/ru/function.next.php) $mode = current($transport); // $mode = 'bike'; — т. е. вернулся уже второй элемент массива.

Спасибо комментатору Alexey Berlinskiy, за этот способ.

Если вы еще знаете способы получения первого элемента — пишите в комментариях.

Свежие записи

  • SQL UPDATE: примеры обновления строк в таблице
  • PHP: substr и мощные альтернативы, чтобы вырезать часть строки
  • Степень в C, C++ и С#: как возвести число в любую степень, побитовые операции
  • Скачать ShowKeyPlus: ссылка на последнюю официальную версию, скачивание, установка
  • Как создать файл в Linux: 12 способов
  • SQL INSERT INTO: примеры вставки строк в таблицу БД MySQL
  • PHP: str_replace — замена или удаление подстроки в строке
  • Функция date() в php: распространенные форматы, примеры, советы
  • cURL в PHP: примеры POST, GET запросов с headers, cookie, JSON и многопоточностью
  • JSON в PHP: примеры json_encode, json_decode, работа с кириллицей и utf-8
  • Файл gitignore — примеры и документация
  • Сортировка массивов в php: ksort, asort и прочие sort’ы
  • jQuery onclick: как выполнить код при клике на кнопку
  • 500 Internal Server Error — в чем причина?
  • SMTP от Yandex: как отправить письма из PHP — пример настроек
  • No such file or directory — в чем причина?
  • Как получить первый элемент массива в php
  • Cтроку в массив по разделителю в PHP: explode, str_split, strtok — что выбрать?
  • 301 редирект на https с www через htaccess
  • Как в php добавить к массиву другой массив?
  • 301 редирект на https без www с помощью htaccess
  • Регулярные выражения в PHP
  • PHP json_decode — как декодировать результат в массив?
  • Yii2 ActiveRecord шпаргалка по составлению запросов
  • Поиск подстроки в строке с помощью PHP
  • Отправка почты на php
  • Как подключить php код в html
  • Конвертировать массив в строку при помощи PHP
  • Подключение одного php файла в другой
  • Подборка ссылок для веб-разработчика
  • Проблема с кириллицей в PHPWord

Как получить первый элемент массива в PHP

У меня есть массив:

array( 4 => ‘apple’, 7 => ‘orange’, 13 => ‘plum’ )

Я хочу получить первый элемент этого массива. Ожидаемый результат:

строка apple

Одно требование: это невозможно сделать с передачей по ссылке , поэтому array_shift — это не очень хорошее решение.

Как я могу это сделать по-другому?

Ответ 1

Лучший ответ, но дорогостоящий (O (n)):

array_shift(array_values($array));

Для O(1):

array_pop(array_reverse($array));

Другие варианты использования

Если изменение (в смысле сброса указателей массивов) $array не является проблемой, вы можете использовать:

reset($array);

Теоретически это должно быть более эффективным, если требуется « копия » массива:

array_shift(array_slice($array, 0, 1));

Начиная с PHP 5.4+ (но может вызвать ошибку индекса, если массив пуст):

array_values($array)[0];

Ответ 2

С амый простой способ:

$arr = array( 4 => ‘apple’, 7 => ‘orange’, 13 => ‘plum’ )

echo reset($arr); // Echoes «apple»

Если вы хотите получить ключ: (выполните после сброса)

echo key($arr); // Echoes «4»

Из документации PHP :

reset() перематывает внутренний указатель массива на первый элемент и возвращает значение первого элемента массива или FALSE, если массив пуст.

Ответ 3

  1. array_key_first
  2. array_key_last

Ответ 5

Некоторые массивы не работают с такими функциями, как list, reset или current. Возможно, это « ненастоящие » массивы — частично реализующие ArrayIterator, например.

Если вы хотите вытащить первое значение независимо от массива, вы можете сократить итератор:

foreach($array_with_unknown_keys as $value) break;

Ваше значение будет доступно в $value, а цикл прервется после первой итерации. Это более эффективно, чем копирование потенциально большого массива в функцию типа array_unshift(array_values($arr)). Таким же образом можно получить ключ:

foreach($array_with_unknown_keys as $key=>$value) break;

Если вы вызываете эту функцию из функции — просто вернитесь раньше:

function grab_first($arr)

foreach($arr as $value) return $value;

>

Ответ 6

Из справочников Laravel:

function head($array)

return reset($array);

>

Массив передается в функцию по значению, функция reset() воздействует на внутренний указатель копии массива и не затрагивает исходный массив (обратите внимание, что она возвращает false, если массив пуст). Пример использования:

$data = [‘foo’, ‘bar’, ‘baz’];

current($data); // foo

next($data); // bar

head($data); // foo

next($data); // baz

Кроме того, вот альтернатива. Она совсем незначительно быстрее, но более интересна. Она позволяет легко изменить значение по умолчанию, если массив пуст:

function head($array, $default = null)

foreach ($array as $item)

return $item;

>

return $default;

>

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

array_unshift

array_unshift() добавляет переданные в качестве аргументов элементы в начало массива array . Обратите внимание, что список элементов добавляется целиком, то есть порядок элементов сохраняется. Все числовые ключи будут изменены таким образом, что нумерация массива будет начинаться с нуля, в то время как строковые ключи останутся прежними.

Замечание:

Сбрасывает внутренний указатель массива на первый элемент.

Список параметров

Значения для добавления.

Возвращаемые значения

Возвращает новое количество элементов в array .

Список изменений

Версия Описание
7.3.0 Теперь эта функция может быть вызвана с одним параметром. Ранее требовалось минимум два параметра.

Примеры

Пример #1 Пример использования array_unshift()

array_unshift ( $queue , «apple» , «raspberry» );
var_dump ( $queue );
?>

Результат выполнения приведённого примера:

array(4) < [0] =>string(5) "apple" [1] => string(9) "raspberry" [2] => string(6) "orange" [3] => string(6) "banana" >

Пример #2 Пример использования с ассоциативными массивами

Если один ассоциативный массив добавляется к другому ассоциативному массиву, то добавляемый массив продолжает числовой индекс первого массиве.

$foods = [
‘apples’ => [
‘McIntosh’ => ‘red’ ,
‘Granny Smith’ => ‘green’ ,
],
‘oranges’ => [
‘Navel’ => ‘orange’ ,
‘Valencia’ => ‘orange’ ,
],
];
$vegetables = [
‘lettuce’ => [
‘Iceberg’ => ‘green’ ,
‘Butterhead’ => ‘green’ ,
],
‘carrots’ => [
‘Deep Purple Hybrid’ => ‘purple’ ,
‘Imperator’ => ‘orange’ ,
],
‘cucumber’ => [
‘Kirby’ => ‘green’ ,
‘Gherkin’ => ‘green’ ,
],
];

array_unshift ( $foods , $vegetables );
var_dump ( $foods );

Результат выполнения приведённого примера:

array(3) < [0] =>array(3) < 'lettuce' =>array(2) < 'Iceberg' =>string(5) "green" 'Butterhead' => string(5) "green" > 'carrots' => array(2) < 'Deep Purple Hybrid' =>string(6) "purple" 'Imperator' => string(6) "orange" > 'cucumber' => array(2) < 'Kirby' =>string(5) "green" 'Gherkin' => string(5) "green" > > 'apples' => array(2) < 'McIntosh' =>string(3) "red" 'Granny Smith' => string(5) "green" > 'oranges' => array(2) < 'Navel' =>string(6) "orange" 'Valencia' => string(6) "orange" > >

Смотрите также

  • array_shift() — Извлекает первый элемент массива
  • array_push() — Добавляет один или несколько элементов в конец массива
  • array_pop() — Извлекает последний элемент массива

User Contributed Notes 13 notes

16 years ago

You can preserve keys and unshift an array with numerical indexes in a really simple way if you’ll do the following:

$someArray =array( 224 => ‘someword1’ , 228 => ‘someword2’ , 102 => ‘someword3’ , 544 => ‘someword3’ , 95 => ‘someword4’ );

$someArray =array( 100 => ‘Test Element 1 ‘ , 255 => ‘Test Element 2’ )+ $someArray ;
?>

now the array looks as follows:

array(
100=>’Test Element 1 ‘,
255=>’Test Element 2′
224=>’someword1′,
228=>’someword2′,
102=>’someword3′,
544=>’someword3′,
95=>’someword4′
);

21 years ago

array_merge() will also reindex (see array_merge() manual entry), but the ‘+’ operator won’t, so.

$arrayone =array( «newkey» => «newvalue» ) + $arrayone ;
?>

does the job.

12 years ago

Sahn’s example almost works but has a small error. Try it like this if you need to prepend something to the array without the keys being reindexed and/or need to prepend a key value pair, you can use this short function:

8 years ago

Anonymous’ associative version wasn’t working for me, but it did with this small tweak:

16 years ago

This becomes a nice little problem if you index your arrays out of order (while manually sorting). For example:

$recordMonths [ 3 ] = ‘8/%/2006’ ;
$recordMonths [ 4 ] = ‘7/%/2004’ ;
$recordMonths [ 0 ] = ‘3/%/2007’ ;
$recordMonths [ 1 ] = ‘2/%/2007’ ;
$recordMonths [ 5 ] = ’12/%/2000′ ;
$recordMonths [ 6 ] = ’11/%/2000′ ;
$recordMonths [ 7 ] = ’10/%/2000′ ;
$recordMonths [ 2 ] = ‘1/%/2007’ ;

for( $i = 0 ; $i < count ( $recordMonths ); $i ++)
<
$singleMonth = $recordMonths [ $i ];
echo «singleMonth: $singleMonth
» ;
>
array_unshift ( $recordMonths , ‘%’ );
for( $i = 0 ; $i < count ( $recordMonths ); $i ++)
<
$singleMonth = $recordMonths [ $i ];
echo «singleMonth: $singleMonth
» ;
>
?>

Produces:

singleMonth: 3/%/2007
singleMonth: 2/%/2007
singleMonth: 1/%/2007
singleMonth: 8/%/2006
singleMonth: 7/%/2004
singleMonth: 12/%/2000
singleMonth: 11/%/2000
singleMonth: 10/%/2000
singleMonth: %
singleMonth: 8/%/2006
singleMonth: 7/%/2004
singleMonth: 3/%/2007
singleMonth: 2/%/2007
singleMonth: 12/%/2000
singleMonth: 11/%/2000
singleMonth: 10/%/2000
singleMonth: 1/%/2007

It reindexes them based on the order they were created. It seems like if an array has all numeric indexes, then it should reindex them based on the order of their index. Just my opinion.

19 years ago

even simpler unshifting of a reference !
/**
* @return int
* @param $array array
* @param $value mixed
* @desc Prepend a reference to an element to the beginning of an array. Renumbers numeric keys, so $value is always inserted to $array[0]
*/
function array_unshift_ref (& $array , & $value )
$return = array_unshift ( $array , » );
$array [ 0 ] =& $value ;
return $return ;
>
?>

22 years ago

Actually this problem with the keys getting reindexed only happens when the keys are numerical:

$a = array( «f» => «five» , «s» => «six» , «t» =>
«twenty» );

print_r ( $a );
echo «\n» ;
foreach( $a as $key => $val )
echo «k: $key v: $val \n» ;
>

array_unshift ( $a , «zero» );
print_r ( $a );
echo «\n» ;
foreach( $a as $key => $val )
echo «k: $key v: $val \n» ;
>
?>

Array
(
[f] => five
[s] => six
[t] => twenty
)

k: f v: five
k: s v: six
k: t v: twenty
Array
(
[0] => zero
[f] => five
[s] => six
[t] => twenty
)

k: 0 v: zero
k: f v: five
k: s v: six
k: t v: twenty

3 months ago

This function helps if you want to prepend a key and value pair to the beginning of an array:

function array_kunshift(array $array, string|int $key, mixed $value): array return array_merge([$key => $value], $array);
>

7 years ago

Another way to tack something to the beginning of an array is with array_merge().

$plans = array(‘AARP’=>’Senior’, ‘AAA’=>’Automobile Club’);

$plans = array_merge(array(«BAR»=>»Best Available Rate»), $plans);

22 years ago

If you need to prepend something to the array without the keys being reindexed and/or need to prepend a key value pair, you can use this short function:

20 years ago

If you need to change the name of a key without changing its position in the array this function may be useful.

function array_key_change ( $Old , $New , $In , $NewVal = NULL ) <
$Temp = array();
while(isset( $Temp [ $Old ]) == false ) <
list( $k , $v ) = each ( $In );
$Temp [ $k ] = $v ;
unset( $In [ $k ]);
>
if( $NewVal == NULL ) <
$NewVal = $Temp [ $Old ];
>
unset( $Temp [ $Old ]);
$Temp = array_reverse ( $Temp );
$In = array_merge (array( $New => $NewVal ), $In );
while(list( $k , $v ) = each ( $Temp )) <
$In = array_merge (array( $k => $v ), $In );
>
return( $In );
>
?>

17 years ago

I had a need tonight to convert a numeric array from 1-based to 0-based, and found that the following worked just fine due to the «side effect» of renumbering:

array_unshift ( $myArray , array_shift ( $myArray ));
?>

20 years ago

Last version of PHP deprecated unshifting of a reference.
You can use this function instead :

function array_unshift1 (& $ioArray , $iValueWrappedInAnArray ) <
$lNewArray = false ;
foreach ( array_keys ( $ioArray ) as $lKey )
$lNewArray [ $lKey + 1 ] = & $ioArray [ $lKey ];
$ioArray = array (& $iValueWrappedInAnArray [ 0 ]);
if ( $lNewArray )
foreach ( array_keys ( $lNewArray ) as $lKey )
$ioArray [] = & $lNewArray [ $lKey ];
return count ( $ioArray );
>

// before last PHP (now generates a deprecation warning)
array_unshift ( $a , & $v );
// since last PHP (caution, there is a wrapping array !!)
array_unshift1 ( $a , array (& $v ));
?>

  • Функции для работы с массивами
    • array_​change_​key_​case
    • array_​chunk
    • array_​column
    • array_​combine
    • array_​count_​values
    • array_​diff_​assoc
    • array_​diff_​key
    • array_​diff_​uassoc
    • array_​diff_​ukey
    • array_​diff
    • array_​fill_​keys
    • array_​fill
    • array_​filter
    • array_​flip
    • array_​intersect_​assoc
    • array_​intersect_​key
    • array_​intersect_​uassoc
    • array_​intersect_​ukey
    • array_​intersect
    • array_​is_​list
    • array_​key_​exists
    • array_​key_​first
    • array_​key_​last
    • array_​keys
    • array_​map
    • array_​merge_​recursive
    • array_​merge
    • array_​multisort
    • array_​pad
    • array_​pop
    • array_​product
    • array_​push
    • array_​rand
    • array_​reduce
    • array_​replace_​recursive
    • array_​replace
    • array_​reverse
    • array_​search
    • array_​shift
    • array_​slice
    • array_​splice
    • array_​sum
    • array_​udiff_​assoc
    • array_​udiff_​uassoc
    • array_​udiff
    • array_​uintersect_​assoc
    • array_​uintersect_​uassoc
    • array_​uintersect
    • array_​unique
    • array_​unshift
    • array_​values
    • array_​walk_​recursive
    • array_​walk
    • array
    • arsort
    • asort
    • compact
    • count
    • current
    • end
    • extract
    • in_​array
    • key_​exists
    • key
    • krsort
    • ksort
    • list
    • natcasesort
    • natsort
    • next
    • pos
    • prev
    • range
    • reset
    • rsort
    • shuffle
    • sizeof
    • sort
    • uasort
    • uksort
    • usort
    • each
    • Copyright © 2001-2024 The PHP Group
    • My PHP.net
    • Contact
    • Other PHP.net sites
    • Privacy policy

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *