Foreach - разное с массивами

Ограничить Foreach

$i = 0;
foreach (........) {
			
$i++;
if($i >4) break;

......

Пропустить первый элемент Foreach

  1. Использовать for вместо foreach и начинайте проход по коллекции с певого элемента
    for (int $i = 1; $i < length; $i++) {
        //TODO
    }​
  2. Создайте булевую переменную и проверяйте ее не изменилась ли она.
    $flag = true;
    foreach ($collection as $value) {
    	if ($flag)
    	{
    		$flag = false;
    	}
    	else {
    		//TODO
    	}
    }​
  3. Удалите первый элемент из массива перед проходом по нему
    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 

Убрать повторяющиеся обьекты из массива.