По заданию сначала нужно сгенерировать массив из 20 чисел в диапазон до 20 до 65. PHP: for($i=0; $i<20; $i++) { $arr[$i] = rand(20,65); echo "$arr[$i]\n"; } Это получилось. Далее думала с помощью цикла найти все четные числа массива и внести их в другой отдельный массив, потом аналогично поступить с нечетными числами. С помощью функции array_sum найти сумму каждого из массивов. И с помощью array_diff найти разность и вывести результат. Но, естественно ничего не получилось. Что-то мне подсказывает, есть способ полегче... Не могли бы помочь разобраться. Заранее спасибо
@mrnmrzv, если-бы в одной из ранее решенных задач не воспользовались функцией суммирования - накопили бы сумму в отдельной переменной (предварительно её инициализировав нулём). Вот и тут можно в двух переменных накапливать суммы четных и нечентых элементов (аналогично выводу i-го элемента массива). Либо, если нужна только разность - к "переменной суммы (накопителю) прибавлять значения четных и вычитать значения нечетных элементов. Вариантов выполнения - много
Вариантов действительно много, вот например слабо извращённая форма: PHP: <?php error_reporting(E_ALL); ini_set('display_errors', 'On'); header('Content-Type: text/html; charset=utf-8'); echo '<pre>'; foreach( $odd = array_fill_keys( range( 1, 20, 2 ), '' ) as $key=>$value ){ $odd[$key] = mt_rand( 20, 65 ); } foreach( $even = array_fill_keys( range( 2, 20, 2 ), '' ) as $key=>$value ){ $even[$key] = mt_rand( 20, 65 ); } $arr = $odd + $even; ksort( $arr ); echo 'Массив случайных чисел<hr />'; print_r( $arr ); echo 'Разность суммы чётных и нечётных элемнтов массива<hr />'; $sumEven = array_sum( $even ); $sumOdd = array_sum( $odd ); echo "$sumEven - $sumOdd = ".( $sumEven - $sumOdd ); echo '</pre>'; --- Добавлено --- @mrnmrzv, непонятно что вы хотели при помощи array_diff получить. Или всё-таки нужна разность массивов, а не разность сумм этих массивов?
@mrnmrzv, или нужна разность сумм чётных значений и нечётных значений? В общем так до конца и не понятно разность чего вам нужна
Нужно вывести МАССИВ. И потом найти РАЗНОСТЬ МЕЖДУ СУММОЙ ЧЕТНЫХ элементов и СУММОЙ НЕЧЕТНЫХ элементов этого МАССИВА =)
@mrnmrzv, тогда мой вариант неправильный, там сумма чётных ключей элементов массива и сумма нечётных ключей элементов массива
PHP: for($i=0; $i<20; $i++){ $arr[$i] = rand(20,65); } $odd = array_filter($arr, function($val){ return $val % 2 != 0; }); $odd2 = array_filter($arr, function($val){ return $val % 2 == 0; }); echo array_sum($odd)%array_sum($odd2);
вот так нуно: PHP: echo '<pre>'; $sumOdd = $sumEven = 0; foreach( $arr = range( 1, 20 ) as $key=>$value) { $arr[$key] = mt_rand( 20, 65 ); if ( $arr[$key] & 1 ) $sumOdd += $arr[$key]; else $sumEven += $arr[$key]; } echo 'Массив случайных чисел<hr />'; print_r( $arr ); echo 'Разность суммы чётных и нечётных элемнтов массива<hr />'; echo "$sumEven - $sumOdd = ".( $sumEven - $sumOdd ); echo '</pre>';