2016-07-13 6 views
0

PHP: Вот что я должен выполнить. И ниже мой код. Мне определенно чего-то не хватает.Ошибка при использовании для цикла и массива

Напишите цикл FOR, используя массив, который печатает «Произведение первых 10 чисел», за которым следует произведение чисел с 1 по 10. Вот подсказка: НЕ начинайте счетчик при 0 или иначе продукт будет равен нулю!

<?php 
$numbers = 0; 
$numbers = range(1 , 10); 
$arrlength = count($numbers); 
for ($x = 1; $x <= $arrlength; $x++) { 
$numbers[$x] = $numbers + $x; 
} 
echo "The product of first 10 numbers is $numbers.<br>"; 

?> 
+1

Вы, кажется, используете '$ numbers' для двух разных целей. У вас должно быть две разные переменные, например '$ numberSum' и' $ numbers'. –

+1

Я смущен, почему в этом вопросе используется 'array'. – cmorrissey

+1

Звучит как задание. Вам не понадобится массив для этой задачи. Если вам действительно нужен массив, вы можете использовать 'array_sum' для вычисления суммы. http://php.net/manual/en/function.array-sum.php – chris85

ответ

4

По существу, вы создаете факторную функцию для ограниченного случая. Проблемы с вашей реализацией заключаются в том, что вы, похоже, повторно использовали переменную $numbers, когда она должна быть одной переменной для хранения продукта, а другая для массива 1-10. Вторая проблема заключается в вашей петле, где вы выполняете цикл от 1 до 10, но то, что вы, вероятно, действительно хотите сделать, это цикл из 0-9, который является индексом массива, так что вы можете получить значения из массива следующим образом:

<?php 
$prod = 1; 
$numbers = range(1 , 10); 
$arrlength = count($numbers); 
for ($x = 0; $x < $arrlength; $x++) { 
    $prod *= $numbers[$x]; 
} 
echo "The product of first 10 numbers is $prod.<br>"; 
?> 

выход которого будет:

The product of first 10 numbers is 3628800. 
+0

да, вы правы, это продукт, а не сумма. Не знаю, откуда у меня это получилось. –

+1

Этот код работал отлично. –

+0

Если я просто хочу пропустить массив и сделать это: "; ?> Почему я получаю 0 индра 3628800? –

0

Пожалуйста, обратите внимание, я не проверял этот код, но я уверен, что он должен работать.

<?php 
    $numbers = range(1, 10); 
    $product = 1; 

    for ($i = 0; $i < count($numbers); $i++) { 
    $product *= $numbers[$i]; 
    } 

    echo 'The product of the first 10 numbers is ' . $product . '<br />'; 
?> 
+0

Я только что заметил, что вы хотите, чтобы продукт не был суммой:/Просто исправил это. – Dendromaniac

Смежные вопросы