Сравнить и удалить некоторые подмассивы одного массива PHP

12
D
На сайте с 28.06.2008
Offline
1101
#11
ivan-lev:
У меня вообще большие сомнения, что он Вам именно в таком формате нужен.. =)



$newItems= [];
foreach ($bigmassive as $item) {
(isset($newItems[$item->id]) && $newItems[$item->id]->year > $item->year)
or $newItems[$item->id] = $item;
}

Люди, расскажите пожалуйста, как работает этот цикл. Я его не понимаю. При чем тут or?

IL
На сайте с 20.04.2007
Offline
435
#12
Dram:
Я его не понимаю. При чем тут or?

Если значение выражения в скобках будет ложное, то выполнится

$newItems[$item->id] = $item;



---------- Добавлено 14.09.2019 в 18:42 ----------

Можно убрать or и заменить на


if (!isset($newItems[$item->id]) || $newItems[$item->id]->year <= $item->year)
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
D
На сайте с 28.06.2008
Offline
1101
#13

ivan-lev, а как называется этот стиль замены IF? - хочу почитать/посмотреть примеры с ним

IL
На сайте с 20.04.2007
Offline
435
#14
Dram:
этот стиль замены IF?

Не уверен, что "стиль замены".. Скорее логика вычисления булевых выражений..

https://en.wikipedia.org/wiki/Short-circuit_evaluation

* по этой же причине, кстати, используется

!isset(..) || 
и блок после || не выполняется.

С интересными приёмами "упрощения" (скорее лаконичного) кода (для js) можно ознакомиться в статье

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий