Существует ли end() Найти последний непустой элемент массива php

S

SlaSoft

Maestro
#1
Код:
            $n = count($parts) - 1;
            if (!empty($parts[$n])) {
                $last_part = $parts[$n];
            } else {
                $last_part = $parts[$n - 1];
            }
Тест
$parts = ['aa', 'aaa', '']
$parts = ['aa', 'aaa']
$parts = []
 
ALarik

ALarik

expert
#2
а в чем собственно вопрос, я понимаю, что краткость и лаконичность - удел профи, но здесь не могу понять что в результате хочеться увидеть\найти\понять ?
при тесте:
Код:
$parts = ['aa', 'aaa', ''];    //aaa
$parts = ['aa', 'aaa'];        //aaa
$parts = [];                // empty
 
ALarik

ALarik

expert
#4
|$parts = ['aa', 'aaa', ''];
|_______________________
|count = 3
|$n = 2
|echo = aaa
|~~~~~~~~~~~~~~
|$parts = ['aa', 'aaa'];
|_______________________
|count = 2
|$n = 1
|echo = aaa
|~~~~~~~~~~~~~~
|$parts = [];
|_______________________
|count = 0
|$n = -1
|echo =
|~~~~~~~~~~~~~~
 
ALarik

ALarik

expert
#7
всеравно не пойму, в чем сафари ? не проще ли переписать сам ход исполнения:
Код:
        $last_part = '';
        $n = count($parts);
        for($i = 0; $i < count($parts); ++$i) {
            if (!empty($parts[$i])) {
                $last_part = $parts[$i];
            }           
        }
 
ALarik

ALarik

expert
#9
если код можно оптимизировать, почему не сделать это, а не подстраиваться под некорректность ?
часто встречаю, так же как и здесь, не проще ли грамотней написать, чем использовать "вырвиглазики" ?
 
OP
S

SlaSoft

Maestro
Thread Starter #10
если код можно оптимизировать, почему не сделать это,
потому что это не мой код, а.. одного, так сказать, плодовитого разработчика.

Я также иногда страдаю дебелизмомо в коде
Например мне проще, построить лесенку условий чем иметь длинную булевую строку
if
if
if
 
Симпатії: Baco
Baco

Baco

architect
#11
можно, но когда времени на такие качели не выделил, а решить надо "здесь и чичаз", то решение, как выразился @SlaSoft бывает не всегда кошерным
лесенку условий чем иметь длинную булевую строку
а я тут люблю свитчить)
ну, брокарт тоже, не авторское творение, а перепись ос под лад современных нужд или так же куски бывает проще взять готовые, хоть и не всегда качественные и приходиться иногда импровизировать :cool:
 
#13
приведенный код в стартопике - ОШИБКА
не могу оспорить, уважаемый @SlaSoft проверено и доказано !
я обычно называю ошибкой то, что автор отказывается принять и осознать, тогда это ошибка на уровне днк, во всех остальных случаях - неоптимизированный код, который под влиянием человеческого фактора мы все допускаем, главное чтобы раздутое чсв разраба не затемняло объективность результата и корректность выполнения кода.
 
#14
оптимальное решение, лучше моего, но я всеравно за "перебор", так можно более точно определить пустышки или некондишн даже по типу

p.s. помню в одну строку доставал последний чанк из path:
PHP:
$last_chunk = end(explode('_', (string)$this->request->get['path']));
 
Останнє редагування:
#16
вот один из вариантов решения:
Код:
        (int)array_pop($parts);
ну и ко всему, PHP Notice не относится к ошибкам, но сам факт некорректного значения имеет место быть, и это место, быть может некорректно сформировать URL, а в итоге всей некорректности вопросы: "какого х:censored:я проседают страницы, бро ?"
 
Зверху