Умножить в то время как () - PullRequest
0 голосов
/ 11 декабря 2011

Мне нужно умножить переменные, но их количество не всегда одинаково, есть ли какая-либо функция для этого или как ее решить?

$string = "abc";
$amn = strlen($string);
$i = 1;

while ($i <= $amn) {
  $comb[$i] = $i;
  $i++;
}

Это сохранит числа 1, 2и 3 в переменную $comb[$i], и мне нужно умножить их между собой $comb[1]*$comb[2]*$comb[3].Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 11 декабря 2011

есть одна функция array_sum (http://php.net/manual/de/function.array-sum.php).). Это сумма вашего массива. Если вам нужен продукт, используйте array_product .

BR

TJ

0 голосов
/ 11 декабря 2011

Прежде всего, поскольку вы работаете с индексом, выполняете цикл заданное количество времени, цикл for здесь более пригоден, он управляет областью видимости переменной индекса $i и обеспечивает более читаемый код.

for($i=1;$i<=strlen($str);$i++){
$comb[$i]=$i;
}

теперь, чтобы умножить каждое из них:

$product = 1;
foreach($com as $key => $value){
    $product*=$value;
}

Если вы пытаетесь просто вычислить факториал, вам даже не нужно делатьмассив:

function factorial($num){
    $fac = 1;
    for($i=2;$i<=$num){
        $fac*=$i;
    }

}
0 голосов
/ 11 декабря 2011

Как насчет этого:

$product = 1;
while($i <= $amn){
    $product = $product*$i;
    $i++;
}

Это вычисляет факториал n!, который равен 1*2*3*4*5*...*n (вы можете пропустить умножение на единицу, потому что это на самом деле nop).

Вы также можете использовать цикл for, чтобы сделать вещи более компактными:

$product = 1;
for($i = 2; $i <= $amn; $product *= $i++);
...