Здравствуйте, Как правильно просуммировать данные в массиве ? Код (Text): <? for($s=1; $s<=count($tpfix); $s++) { $arr += $tpfix[$s]; } ?> Что бы не было такой ошибки : expects parameter 1 to be array, double given in
array_sum ( $tpfix ) помоему --- Добавлено --- count($tpfix) Спойлер: мозг плющит count считает каждый скажем раздел в массиве, то бишь: PHP: [ 0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd' ] четыре раздела, дальше что... for($s=1; задается не с нуля а с единицы, это = $tpfix[$s]; где $s = 1 тоесть уже перепрыгиваем нулевой раздел... но count посчитал 4!! интересно.. когда прокручивается 4 раз цикл вот тут $tpfix[4] = фуй, такого значения нема. потом вопрос встал... а там вообще не строковое значение место объявленного в массив?
Код (Text): $data = array(1,2,3,10,6,1,4,5,6,7,42,30,38); for($s=0; $s<count($data); $s++) { $arr += $data[$s]; } $result = 0; $max = reset($arr); foreach($arr as $v) { if($v > $max) { $max = $v; } } Ошибка : reset() expects parameter 1 to be array, double given in и Invalid argument supplied for foreach() in
on line 8 и on line 9 Я питался разобраться, нужно как-то массив global обьявить ! То-есть я так понимаю не успевает заполнить новый массив ?
у тебя $arr не массив совсем что по твоему делает операция += ? --- Добавлено --- во вторых в третьем посте уже ответил
Мне нужно в массив $arr записать поочередную сумму.... Это $arr += $data[$s]; аналог этого $arr = $arr + $data[$s]
Код (Text): $data = array(1,2,3,10,6,1,4,5,6,7,42,30,38); for($s=1; $s<count($data); $s++) { $arr = array_sum ( $data[$s] ); } $result = 0; $max = reset($arr); foreach($arr as $v) { if($v > $max) { $max = $v; } } Но ведь такой вариант не работает ! Что здесь не так ?
выучить Код (Text): reset() expects parameter 1 to be array, double given in и Invalid argument supplied for foreach() in --- Добавлено --- тут не будут делать все за тебя. сам должен понимать свои ошибки
когда вот так непонятно, самое простое - это дописать к каждой строчке комментарий, что она делает. даже самые опытные инженеры так делают.
Братишь, то, что ты назвал переменную сокращением, от слова array (массив) еще не делает её массивом. Ты загоняешь в одну переменную все значения в цикле. Я несколько раз перечитал тему и не понял чего ты на самом деле хочешь. Просуммировать значения массива? Вот этот кусок кода делает это. PHP: for($s=0; $s<count($data); $s++) { $arr += $data[$s]; } // В переменной $arr на выходе получается сумма всех элементов массива. Сформулируй нормально чего ты хочешь.
Если я правильно понял то, что ты хочешь. Вместо 3-ей строки в тело цикла вставь: PHP: if(count($arr) === 0){ $arr[] = $data[$s]; } else { $arr[] = $arr[count($arr) - 1] + $data[$s]; } и объяви $arr до цикла. PHP: $arr = [];