Мне нужно получить общее значение этого массива всех чисел выше или равно 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; }));
О, теперь я вижу «я должен сделать это с циклом 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]; }