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

Как найти последний элемент массива

  • автор:

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

Смотря что подразумевается под словом «получить». Если нужно именно извлечь (получить элемент и уменьшить длину массива) последний элемент массива, то можно воспользоваться функцией array_pop() :

 $numbers = [1, 2, 3, 4]; $lastNumber = array_pop($numbers); print_r($numbers); //=> [1, 2, 3] // Исходный массив уменьшился на один элемент 

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

 $numbers = [1, 2, 3, 4]; $lastNumber = $numbers[array_key_last($numbers)]; print_r($numbers); //=> [1, 2, 3, 4] // Исходный массив при этом не изменился 

08 ноября 2022

Поиск последнего элемента PHP массива с помощью функции count() .

Подсчитывает количество элементов массива.

 $numbers = ['one', 'two', 'three', 'four']; $count = count($numbers); // => 4 $lastKey = count($numbers) - 1; // => 3 $lastValue = $numbers[$lastKey]; echo($lastValue); // => four 

Получаем последний элемент массива в JavaScript

Массив в JavaScript — это объект-контейнер, содержащий фиксированное количество значений одного типа. Длина массива, после его создания, останется постоянной. В данной статье мы рассмотрим различные методы доступа к последнему элементу массива.

Как получить последний элемент массива?

1 — Используем метод slice() массива для возврата определенного элемента.

2 — Извлекаем последний элемент, используя массив отрицательных индексов array.slice(-1).

3 — Сохраняем искомое значение в переменной.

Далее мы рассмотрим варианты реализации кода.

Использование свойства длины массива.

Свойство length возвращает количество элементов в массиве. Вычитание 1 из длины массива дает индекс последнего элемента массива, с помощью которого можно получить доступ к последнему элементу. Причина, по которой мы вычитаем 1 из длины, заключается в том, что в JavaScript нумерация индексов массива начинается с 0. т. е. индекс 1-го элемента будет равен 0. Поэтому индекс последнего элемента будет равен длине массива-1.

let array = [2, 4, 6, 8, 10, 12, 14, 16];
let lastElem = array[array.length — 1];

Использование метода slice().

Метод slice() возвращает определенные элементы из массива в виде нового объекта массива. Этот метод выбирает элементы, начинающиеся с заданного начального индекса и заканчивающиеся заданным конечным индексом, исключая элемент в конечном индексе. Метод slice() не изменяет существующий массив. Предоставление одного значения индекса возвращает элемент в этой позиции, а отрицательное значение индекса вычисляет индекс с конца массива.

let array = [2, 4, 6, 8, 10, 12, 14, 16];
let lastElem = array.slice(-1);

Использование метода pop().

Метод pop() извлекает/удаляет последний элемент массива и возвращает его. Этот метод изменяет длину массива.

let array = [2, 4, 6, 8, 10, 12, 14, 16];
let lastElem = array.pop();

Давайте теперь используем все три метода для массива, чтобы получить последний элемент и проверить, какой метод является самым быстрым:

let array = [2, 4, 6, 8, 10, 12, 14, 16];

console.time(‘array length property’);
let lastElem = array[array.length — 1];
console.log(lastElem);
console.timeEnd(‘array length property’);

console.time(‘array slice method’);
let lastElem1 = array.slice(-1);
console.log(lastElem1);
console.timeEnd(‘array slice method’);

console.time(‘array pop method’);
let lastElem2 = array.pop();
console.log(lastElem2);
console.timeEnd(‘array pop method’);

//16
//array length property: 7 ms
//[ 16 ]
//array slice method: 5 ms
//16
//array pop method: 2 ms

И как вы можете видеть, метод pop() является самым быстрым. Вы можете использовать его, если вас устраивает изменение массива. Если вы не хотите изменять массив, то используйте метод slice().

Создано 14.09.2021 09:42:02

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2024 Русаков Михаил Юрьевич. Все права защищены.

    JS последний элемент массива?

    Сейчас делаю так
    array[array.length — 1]
    Нужно что то вроде array.last, Не смог найти такого
    Как сеньер разработчики бы выбрали последний эллемент массива?
    Чтобы без лишних операций в виде поиска длины массива

    • Вопрос задан более трёх лет назад
    • 78102 просмотра

    Комментировать
    Решения вопроса 1

    alvvi

    export default apathy;

    Как сеньер разработчики бы выбрали последний эллемент массива?

    Наверное, как и все остальные
    array[array.length — 1]

    Чтобы без лишних операций в виде поиска длины массива

    Если тут и есть лишняя операция, то это как раз -1, длина массива — это свойство, ничем от вашего array.last оно не отличалось бы, если бы второе существовало, конечно.

    Ответ написан более трёх лет назад
    Комментировать
    Нравится 11 Комментировать
    Ответы на вопрос 3
    Learning Java

    var array = [1,2,3,4,5]; Array.prototype.last = function() < return this[this.length - 1]; >array.last() // 5

    Ответ написан более трёх лет назад
    Комментировать
    Нравится 9 Комментировать
    Stalker_RED @Stalker_RED

    Если этот массив больше не нужен, то можно делать .pop()

    Еще можно делать slice(-1), но мне кажется, что это хуже читается.

    Чтобы без лишних операций в виде поиска длины массива

    И вообще, нет никакой операции поиска, длина массива — это свойство самого массива, и обращение к элементу через индекс (вот как у вас сейчас) гораздо быстрее, чем модифицировать массив )

    Как найти последний элемент массива

    (PHP 4, PHP 5, PHP 7, PHP 8)

    end — Устанавливает внутренний указатель массива на последний элемент

    Описание

    end ( array | object &$array ): mixed

    Функция end() сдвигает внутренний указатель массива array на последний элемент и возвращает его значение.

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

    Массив. Этот массив передаётся по ссылке, поскольку функция изменяет его. Поэтому нужно передать массив как переменную, а не как функцию, которая возвращает массив, поскольку по ссылке допустимо передавать только переменные.

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

    Возвращает значение последнего элемента или false для пустого массива.

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

    Версия Описание
    8.1.0 Вызов функции на объекте ( object ) объявлен устаревшим. Объект ( object ) либо сначала преобразовывают в массив ( array ) функцией get_mangled_object_vars() , либо пользуются методами класса, в котором реализовали интерфейс Iterator , например, ArrayIterator .
    7.4.0 Экземпляры классов библиотеки SPL теперь обрабатываются как пустые объекты, у которых нет свойств, вместо вызова метода интерфейса Iterator с тем же именем, что и у этой функция.

    Примеры

    Пример #1 Пример использования функции end()

    $fruits = array( ‘яблоко’ , ‘банан’ , ‘клюква’ );
    echo end ( $fruits ); // клюква

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

    • current() — Возвращает текущий элемент массива
    • each() — Возвращает текущую пару ключа и значения массива и сдвигает указатель на одну позицию вперёд
    • prev() — Сдвигает внутренний указатель массива на одну позицию назад
    • reset() — Устанавливает внутренний указатель массива на первый элемент
    • next() — Сдвигает внутренний указатель массива на одну позицию вперёд
    • array_key_last() — Получает последний ключ массива

    Improve This Page

    User Contributed Notes 15 notes

    13 years ago

    It’s interesting to note that when creating an array with numeric keys in no particular order, end() will still only return the value that was the last one to be created. So, if you have something like this:

    $a = array();
    $a [ 1 ] = 1 ;
    $a [ 0 ] = 0 ;
    echo end ( $a );
    ?>

    This will print «0».

    17 years ago

    This function returns the value at the end of the array, but you may sometimes be interested in the key at the end of the array, particularly when working with non integer indexed arrays:

    // Returns the key at the end of the array
    function endKey ( $array ) end ( $array );
    return key ( $array );
    >
    ?>

    Usage example:
    $a = array( «one» => «apple» , «two» => «orange» , «three» => «pear» );
    echo endKey ( $a ); // will output «three»
    ?>

    12 years ago

    If all you want is the last item of the array without affecting the internal array pointer just do the following:

    function endc ( $array )

    $items = array( ‘one’ , ‘two’ , ‘three’ );
    $lastItem = endc ( $items ); // three
    $current = current ( $items ); // one
    ?>

    This works because the parameter to the function is being sent as a copy, not as a reference to the original variable.

    21 years ago

    If you need to get a reference on the first or last element of an array, use these functions because reset() and end() only return you a copy that you cannot dereference directly:

    9 years ago

    I found that the function end() is the best for finding extensions on file name. This function cleans backslashes and takes the extension of a file.

    private function extension ( $str ) $str = implode ( «» , explode ( «\\» , $str ));
    $str = explode ( «.» , $str );
    $str = strtolower ( end ( $str ));
    return $str ;
    >

    // EXAMPLE:
    $file = ‘name-Of_soMe.File.txt’ ;
    echo extension ( $file ); // txt
    ?>

    Very simple.

    18 years ago

    Please note that from version 5.0.4 ==> 5.0.5 that this function now takes an array. This will possibly break some code for instance:

    echo «>> » . end ( array_keys (array( ‘x’ => ‘y’ ))). «\n» ;

    ?>

    which will return «Fatal error: Only variables can be passed by reference» in version

    If you run into this problem with nested function calls, then an easy workaround is to assign the result from array_keys (or whatever function) to an intermediary variable:

    $x = array_keys (array( ‘x’ => ‘y’ ));
    echo «>> » . end ( $x ). «\n» ;

    11 years ago

    php v5.4 does not support the following statement.
    echo end(explode(«.», $filename)); // return jpg string

    instead you have to split into 2 statements
    $file = explode(«.», $filename);
    echo end ($file);

    6 years ago
    6 years ago

    Attempting to get the value of a key from an empty array through end() will result in NULL instead of throwing an error or warning becuse end() on an empty array results in false:

    $a = [ ‘a’ => [ ‘hello’ => ‘a1’ , ‘world’ => ‘a2’ ],
    ‘b’ => [ ‘hello’ => ‘b1’ , ‘world’ => ‘b2’ ],
    ‘c’ => [ ‘hello’ => ‘c1’ , ‘world’ => ‘c2’ ]
    ];
    $b = [];

    var_dump ( end ( $a )[ ‘hello’ ]);
    var_dump ( end ( $b )[ ‘hello’ ]);
    var_dump ( false [ ‘hello’ ]);

    13 years ago

    this is a function to move items in an array up or down in the array. it is done by breaking the array into two separate arrays and then have a loop creates the final array adding the item we want to move when the counter is equal to the new position we established the array key, position and direction were passed via a query string

    //parameters
    //$array- the array you are modifying
    //$keytomove — the key of the item you wish to move
    //$pos — the current position of the item: used a count($array) function
    //and then loop with incrementing integer to add the position to the up //or down button
    //$dir — the direction you want to move it — «up»/»dn»

    function change_pos ( $array , $keytomove , $pos , $dir ) <
    //count the original number of rows
    $count = count ( $array );
    //set the integer we will use to place the moved item
    if( $dir == «up» ) <
    if( $pos == 1 ) <
    //if the item is already first and we try moving it up
    //we send it to the end of the array
    $change = $count ;
    >else <
    //anywhere else it just moves back one closer to the start of the array
    $change = $pos — 1 ;
    >
    >
    //do the same for the down button
    if( $dir == «dn» ) <
    if( $pos == $count ) <
    $change = 1 ;
    >else <
    $change = $pos + 1 ;
    >
    >
    //copy the element that you wish to move
    $move = $array [ $keytomove ];
    //delete the original from the main array
    unset( $array [ $keytomove ]);
    //create an array of the names of the values we
    //are not moving
    $preint = 1 ;
    foreach( $array as $c ) <
    $notmoved [ » < $preint >» ] = $c [ ‘name’ ];
    $preint ++;
    >
    //loop through all the elements
    $int = 1 ;
    while( $int //dynamically change the key of the unmoved item as we increment the counter
    $notmovedkey = $notmoved [ » $int » ];
    //when the counter is equal to the position we want
    //to place the moved entry we pump it into a new array
    if( $int == $change ) <
    $neworder [ » < $keytomove >» ] = $move ;
    >
    //add all the other array items if the position number is not met and
    //resume adding them once the moved item is written
    if( $contkey != «» ) <
    $neworder [ » < $notmovedkey >» ] = $array [ » < $notmovedkey >» ];
    >
    $int ++;
    >

    return( $neworder );
    >
    ?>

    This is not too elegant but it works.

    14 years ago

    Take note that end() does not recursively set your multiple dimension arrays’ pointer to the end.

    Take a look at the following:

    // create the array for testing
    $a = array();
    $i = 0 ;
    while( $i ++ < 3 )$a [] = array( dechex ( crc32 ( mt_rand ())), dechex ( crc32 ( 'lol' . mt_rand ())));
    >

    // show the array tree
    echo » ; var_dump ( $a );

    // set the pointer of $a to the end
    end ( $a );

    // get the current element of $a
    var_dump ( current ( $a ));
    // get the current element of the current element of $a
    var_dump ( current ( current ( $a )));

    ?>

    You will notice that you probably get something like this:

    The array elements’ pointer are still at the first one as current. So do take note.

    21 years ago

    When adding an element to an array, it may be interesting to know with which key it was added. Just adding an element does not change the current position in the array, so calling key() won’t return the correct key value; you must first position at end() of the array:

    function array_add (& $array , $value ) <
    $array [] = $value ; // add an element
    end ( $array ); // important!
    return key ( $array );
    >
    ?>

    7 years ago

    I found using pathinfo very useful in getting extension of a file.
    $filename = dictionary.txt;
    $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)) ;

    5 years ago

    To get the first element:

    // Get first item.
    foreach ($array as $item) $first = $item;
    break;
    >
    // $first will have the first element.

    7 years ago

    In case you need add separator at end

    $numbers = array(‘1′,’2′,’3′,’4’);
    foreach ($numbers as $number) echo $number;
    if (end($numbers) != $number) echo ‘, ‘;
    >
    >

    • Функции для работы с массивами
      • 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 не будет опубликован. Обязательные поля помечены *