CommerCentr
UA
Увійти

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

#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 = []
#2
а в чем собственно вопрос, я понимаю, что краткость и лаконичность - удел профи, но здесь не могу понять что в результате хочеться увидеть\найти\понять ?
при тесте:
$parts = ['aa', 'aaa', ''];    //aaa
$parts = ['aa', 'aaa']; //aaa
$parts = []; // empty
#3
сделай тест

echo $last
#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 =
|~~~~~~~~~~~~~~
#5
что ворнинга не было?
#6
SlaSoftворнинга не было

PHP Notice: Undefined offset: -2
#7
всеравно не пойму, в чем сафари ? не проще ли переписать сам ход исполнения:
$last_part = '';
$n = count($parts);
for($i = 0; $i < count($parts); ++$i) {
if (!empty($parts[$i])) {
$last_part = $parts[$i];
}
}
#8
Я показал код

а вот решенеие

end(array_filter($part))
#9
SlaSoftпоказал код

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

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

Я также иногда страдаю дебелизмомо в коде
Например мне проще, построить лесенку условий чем иметь длинную булевую строку
if
if
if
#11
ALarikкод можно оптимизировать

можно, но когда времени на такие качели не выделил, а решить надо "здесь и чичаз", то решение, как выразился @SlaSoft бывает не всегда кошерным
SlaSoftлесенку условий чем иметь длинную булевую строку

а я тут люблю свитчить)
SlaSoftэто не мой код

ну, брокарт тоже, не авторское творение, а перепись ос под лад современных нужд или так же куски бывает проще взять готовые, хоть и не всегда качественные и приходиться иногда импровизировать :cool:
#12
так дело в том что приведенный код в стартопике - ОШИБКА!
#13
SlaSoftприведенный код в стартопике - ОШИБКА

не могу оспорить, уважаемый @SlaSoft проверено и доказано !
я обычно называю ошибкой то, что автор отказывается принять и осознать, тогда это ошибка на уровне днк, во всех остальных случаях - неоптимизированный код, который под влиянием человеческого фактора мы все допускаем, главное чтобы раздутое чсв разраба не затемняло объективность результата и корректность выполнения кода.
#14
SlaSoftend(array_filter($part))

оптимальное решение, лучше моего, но я всеравно за "перебор", так можно более точно определить пустышки или некондишн даже по типу

p.s. помню в одну строку доставал последний чанк из path:
$last_chunk = end(explode('_', (string)$this->request->get['path']));
#15
Если нас начнут индексировать :)

тема - Найти последний непустой элемент массива
#16
вот один из вариантов решения:
(int)array_pop($parts);

ну и ко всему, PHP Notice не относится к ошибкам, но сам факт некорректного значения имеет место быть, и это место, быть может некорректно сформировать URL, а в итоге всей некорректности вопросы: "какого х:censored:я проседают страницы, бро ?"

Читати може будь-хто. Щоб писати й голосувати — увійдіть в акаунт.