Foreach - разное с массивами
Ограничить Foreach
$i = 0;
foreach (........) {
$i++;
if($i >4) break;
......
Пропустить первый элемент Foreach
- Использовать
for
вместоforeach
и начинайте проход по коллекции с певого элемента
for (int $i = 1; $i < length; $i++) { //TODO }
- Создайте булевую переменную и проверяйте ее не изменилась ли она.
$flag = true; foreach ($collection as $value) { if ($flag) { $flag = false; } else { //TODO } }
- Удалите первый элемент из массива перед проходом по нему
unset($array[0]);
Проверить равна ли переменная одному из значений не массива
Функция in_array()
Чтобы не писать кучу конструкций типа if ($a == "one" OR $a == "two" OR $a == "letter"
...
Объединяем их в массив и воспользуемся функцией in-array
$wordsArray = ['one','two','three'];
if(in_array($a,$wordsArray)){
//code here
}
Проверить, имеют ли все ключи в массиве пустые значения или NULL?
Функция array_filter()
if (!array_filter($array)) {
// что-то
}
Убрать повторяющиеся обьекты из массива
Если какое-то из значений совпадает, например ID элемента
$result = [];
foreach($data as $o) {
$result[$o->parent_id] = $o;
}
//$result = array_values($result);
print_r($result);
используйте ассоциативный массив, в качестве ключей - значения parent_id
. Каждый последующий объект заменит предыдущий. В итоге получите отсутствие дубликатов. Если потребуется вернуть последовательные числовые ключи - используйте array_values()
Ссылки и благодарности
Про пропуск первого элемента: https://ru.stackoverflow.com/a/594411
Убрать повторяющиеся обьекты из массива.