Получение общей величины массива с условием

Мне нужно получить общее значение этого массива всех чисел выше или равно 0. Это массив

$aReeks = array(23,245,1,2,12,-10,46,6,66,9999,-55,348,56,6,66,983); 

Это код, который у меня есть до сих пор, но он показывает только наибольшее количество массивов и не подсчитывает значения и показывает общее количество.

 $totaal = 0; for($y=0; $y < count($aReeks); $y++) { if($totaal < $aReeks[$y] && $aReeks[$y] > 0) $totaal = $aReeks[$y]; } 

Я должен сделать это с помощью цикла for.

Вот быстрый способ:

 $total = array_sum(array_filter($aReeks, function($n) { return $n > 0; })); 
  • Фильтрация массива для значений больше 0
  • Сумма этого массива

О, теперь я вижу «я должен сделать это с циклом for». , так что это не будет принято для вашей домашней работы, я думаю.

 $aReeks = array(23,245,1,2,12,-10,46,6,66,9999,-55,348,56,6,66,983); $total=0; for($i =0 ; $i< count($aReeks) ; $i++) { if($aReeks[$i]>=0) { $total+= $aReeks[$i]; } } echo $total ; ?> 

Вывод

11859

Вы делаете 2 основных ошибки, if состоянии, $totaal < $aReeks[$y] вам вообще не нужна эта проверка. Во-вторых, вместо суммирования значения каждого элемента в общей сумме всех предыдущих элементов … вы просто присваиваете значение переменной $totaal внутри цикла.

 $aReeks = array(23,245,1,2,12,-10,46,6,66,9999,-55,348,56,6,66,983); $totaal = 0; for($y=0; $y < count($aReeks); $y++) { if($aReeks[$y] > 0) $totaal = $totaal + $aReeks[$y]; }