Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: сумма нечетных элементов массива
Форумы портала PHP.SU » » Вопросы новичков » сумма нечетных элементов массива

Страниц (1): [1]
 

1. wolf0022 - 19 Октября, 2014 - 14:00:28 - перейти к сообщению
есть 28 элементов массива, надо вывести только нечетные, и вывести их сумму
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $numbers = range(1, 28);
  3. shuffle($numbers);
  4. while (list(, $number) = each($numbers)) { //list --  Присвоить переменным из списка значения подобно массиву
  5.     echo "$number ";
  6. }
  7. echo "ne chetnie ilementi massiva:" . "<br>";
  8. foreach ($numbers as $key => $value) {
  9.     if (($key + 1) % 2 != 0) {
  10.         echo $value . '<br />';
  11. }}
  12. {$value+=$value;}  // знаю что неверно но это всё что я смог((
  13. echo ($value);
  14. ?>

в итоге выводит последний элемент массива+последний элемент массива, а нужно сумму value
2. teddy - 19 Октября, 2014 - 14:06:31 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $odd = array_filter($arr, function($val){
  2.     return $val % 2 != 0;
  3. });
  4.  
  5. foreach($odd as $val){
  6.     echo $val.'<br />';
  7. }
  8.  
  9. echo 'Сумма нечетных чисел: '.array_sum($odd);

$arr - Ваш массив.
3. wolf0022 - 19 Октября, 2014 - 14:18:20 - перейти к сообщению
teddy пишет:
PHP:
скопировать код в буфер обмена
  1. $odd = array_filter($arr, function($val){
  2.     return $val % 2 != 0;
  3. });
  4.  
  5. foreach($odd as $val){
  6.     echo $val.'<br />';
  7. }
  8.  
  9. echo 'Сумма нечетных чисел: '.array_sum($odd);

$arr - Ваш массив.


foreach($odd as $val){
echo $val.'<br />'; это как я понял выводит нечет числа в массиве, и складывает их а мне надо нечетные индексы массива то есть 1,3,5,7 и тд элементы массива сложить, их вывод у меня есть а вот как сложить..
4. teddy - 19 Октября, 2014 - 14:24:12 - перейти к сообщению
Только выводит. Складывается с помощью array_sum.
Если нужны индексы а не значения, это нужно было как бы отметить изначально...

Схема остается прежней, только ключи из массива выбираются с помощью array_keys и все. Если нужно сохранить и значения тогда array_flip.

http://php.net/manual/ru/function.array-keys.php
http://php.net/manual/ru/function.array-flip.php
(Добавление)
Если же нужно получить значения которым соответствуют нечетные индексы то вот ещё пример

Спойлер (Отобразить)
5. wolf0022 - 19 Октября, 2014 - 14:44:54 - перейти к сообщению
teddy пишет:
Только выводит. Складывается с помощью array_sum.
Если нужны индексы а не значения, это нужно было как бы отметить изначально...

Схема остается прежней, только ключи из массива выбираются с помощью array_keys и все. Если нужно сохранить и значения тогда array_flip.

http://php.net/manual/ru/function.array-keys.php
http://php.net/manual/ru/function.array-flip.php
(Добавление)
Если же нужно получить значения которым соответствуют нечетные индексы то вот ещё пример

Спойлер (Отобразить)


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $numbers = range(1, 28);
  3. shuffle($numbers);
  4. while (list(, $number) = each($numbers)) { //list --  Присвоить переменным из списка значения подобно массиву
  5.     echo "$number ";
  6. }
  7. echo "ne chetnie ilementi massiva:" . "<br>";
  8. foreach ($numbers as $key => $value) {
  9.     if (($key + 1) % 2 != 0) {
  10.         echo $value . '<br />';
  11. }}
  12.  
  13. $numbers = array_flip($numbers);
  14. echo $numbers ;
  15. echo 'Сумма нечетных чисел: '.array_sum($numbers);
  16. ?>

сделал так выводит всегда одну и тужу цифру, помогите кодом пожалуйста)
6. teddy - 19 Октября, 2014 - 15:16:44 - перейти к сообщению
Не обязательно копировать мое сообщение в своих постах Улыбка
Я б помог но похоже не понимаю что Вам нужно...
Объясните ещё раз, более внятно...
7. wolf0022 - 19 Октября, 2014 - 15:19:58 - перейти к сообщению
нужно сложить значения нечетных индексов то есть массив (1,3,2,5,8,4,7)
нечетные 1,2,8,7
их сумма 18
8. teddy - 19 Октября, 2014 - 15:31:17 - перейти к сообщению
Похоже я понял..)) Индексы вообще то считаются с нуля, а не с 1.

PHP:
скопировать код в буфер обмена
  1. $numbers = array(1,3,2,5,8,4,7);
  2.  
  3. $result = array();
  4. $numCnt = count($numbers);
  5.  
  6. for($i = 0, $j = 1; $i < $numCnt; $i++, $j++){
  7.        
  8.     if($j % 2 != 0)
  9.         $result[] = $numbers[$i];
  10. }
  11.  
  12. echo implode(', ', $result).'<br />';
  13. echo 'Сумма '.array_sum($result);

Сейчас я надеюсь все правильно?))
9. wolf0022 - 19 Октября, 2014 - 16:22:25 - перейти к сообщению
спасибо большое мил человек))

 

Powered by ExBB FM 1.0 RC1