Веб-версияОткрыть в Telegram

ПостВсем, привет! С прошлыми майскими праздниками, и с будущими тоже! 🎉

6 мая 2025
T
The Fly's PHP - Делаем из Мухи Слона
Всем, привет! С прошлыми майскими праздниками, и с будущими тоже! 🎉 Во всех PHP сообществах наступила тишина, или все отдыхают, или усердно работают 😄 Так или иначе, под шумок апрельских и майских деньков ворвался и был одобрен RFC по добавлению новых функций для работы с массивами: array_first() и array_last() в PHP 8.5. Как видно из названий, это функции для получения первого и последнего значения передаваемого массива. Примеры результатов: array_first([1, 2, 3]); // 1 array_first([2, 3]); // 2 array_first(['a' => 2, 'b' => 1]); // 2 array_first([null, 2, 3]); // null array_first([]); // null array_first([$obj, 2, 3]); // $obj array_first([1])); // 1 array_first([true]); // true array_last([1, 2, 3]); // 3 array_last([2, 3]); // 3 array_last(['a' => 2, 'b' => 1]); // 1 array_last([2, 3, null]); // null array_last([]); // null array_last([2, 3, $obj]); // $obj array_last([1])); // 1 array_last([true]); // true И тут возможно возникнет вопрос? Что? Это было добавлено только что, неужели ранее подобных функций не было в PHP, языке в котором есть почти все что угодно для работы с массивами. И действительно только что. Достаточно вспомнить, что массив в PHP - это монструозный комбайн всего, что только можно придумать. Соответственно метод "влоб" - получения элемента по нулевому индексу, не всегда даст ожидаемый результат: $array = [ "g" => 456, 2, 4 => "string" ]; var_dump($array[0]); //выдаст 2 [$first] = $array; // какая-нибудь деструктуризация выдаст тоже 2 Заглянем в недалекое прошлое, в 2018 год, PHP 7.3, в то время были приняты такие функции как array_key_first() и array_key_last(). Но возможно для кого-то будет новостью, что в том же RFC предлагалось ввести так же такие функции как array_value_first() и array_value_last(), что логично возвращали бы значения первого и последнего элемента в массиве. Но эти функции были отклоненны, почему, не совсем понятно, может кто-то из подписчиков помнит и знает доподлинную причину отклонения, либо просто время не пришло, и нужны были дополнительные 7 лет для переосознания 😀 Так вот с тех пор получать ключи стало проще, нежели ранешнее array_keys($array)[0], а если еще массив был пустым, то обязательная проверка на пустоту или вообще увеличение когнитивной сложности реализации в виде циклов (что-то достаточно приближенно к современному программированию на каком-нибудь golang). Получение первого и последнего элементов массива тоже стало проще: var_dump($array[array_key_first($array)]); // 456 var_dump($array[array_key_last($array)]); // "string" А что было до PHP 7.3? Кроме указанного способа по получению ключей, а затем значений, еще с PHP 4, были функции reset() и end(). Были, есть и будут :) И используя их можно получить вполне ожидаемый результат: var_dump(reset($array)); //456 var_dump(end($array));exit; // "string" // или те же array_shift, array_pop тоже технически выполнят что нужно var_dump(array_shift($array)); //456 var_dump(array_pop($array)); // "string" так зачем тогда все эти телодвижения по вводу новых функций? Просто все существующие хитрости,семантически являются неправильным подходом, поскольку они изменяют внутреннее состояние массива. Кроме того, это также не работает должным образом для, например, массива, возвращаемого из функции или других подобных непредусмотренных случаев. А как вы думаете, нужны ли были эти новые функции или итак по старинке справились бы? ❓
33 · 9.2K ·

Рядом в ленте

TThe Fly's PHP - Делаем из Мухи СлонаПыхап 8 февраля! Друзья, через 2.5 недели пройдёт второй Пыхап! В программе у нас снова 3 доклада и новая секция: 🤔 Шардирование в RabbitMQ Антон Растрыгин рассTThe Fly's PHP - Делаем из Мухи СлонаPHP True Async: обсуждаем RFC с автором Сегодня в 19:00 по Москве мы встретимся с Дмитрием и Вадимом, чтобы обсудить RFC PHP True Async и перспективы появления
это сообщение
TThe Fly's PHP - Делаем из Мухи СлонаОчередная токсик среда. Как не хотелось не трогать сам PHP, но придётся, потому что моя жепь с этого немного подгорела на #RandomBeer в предыдущую пятницу. PHP TThe Fly's PHP - Делаем из Мухи СлонаК сожалению, на подготовку условия задачи и настройку Хобота на приём ответов потребовалось больше времени, чем мы ожидали. Поэтому мы переносим конкурс на 19:3
TThe Fly's PHP - Делаем из Мухи СлонаThe Fly's PHP - Делаем из Мухи Слона@flyphp · канал · Технологии
414подписчиков200средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем