在php中循环计算的最佳方法

时间:2016-05-05 15:09:17

标签: php html

我想在循环的帮助下计算两个操作。他们已经在工作并提供我需要的结果。但我希望它们看起来更像编码。所以,如果有人可以借助 for php

帮助他们
for($i=0;i<something;$i++){
    $temp_calc = ;
}

这里有两个陈述。

  1. 在第一个语句中,数组长度为9。

  2. 在第二个语句中,数组长度为12。

  3. 两个语句都要在不同的for循环中解决,因为它们是完全不同的问题。

    $temp_calc = 10*$temp_array[0]+9*$temp_array[1]+8*$temp_array[2]+7*$temp_array[3]+6*$temp_array[4]+5*$temp_array[5]+4*$temp_array[6]+3*$temp_array[7]+2*$temp_array[8];
    
    $temp_calc = 1*$temp_array[0]+3*$temp_array[1]+1*$temp_array[2]+3*$temp_array[3]+1*$temp_array[4]+3*$temp_array[5]+1*$temp_array[6]+3*$temp_array[7]+1*$temp_array[8]+3*$temp_array[9]+1*$temp_array[10]+3*$temp_array[11];
    

    提前致谢

4 个答案:

答案 0 :(得分:2)

使用update-database循环而不是foreach循环会更简单一些。如果您特别需要使用for循环,因为它是作业的要求,您可以查看PHP documentation。有一些例子使用for循环来循环数组。这是一个通用的基本控制结构,对于您真正了解如何使用它将更有价值。更重要的部分是循环内部发生的事情。有多种方法可以做到这一点,但这里有一些基本的例子。

第一个:

for

第二个

// initialize multiplier and result outside the loop
$multiplier = 10;
$result = 0;

// loop over the values
foreach ($temp_array as $value) {
    // add the value * multiplier to the result and decrement the multiplier
    $result += $value * $multiplier--;
}

答案 1 :(得分:1)

两个问题:

$temp_array = array(2,2,2,2,2,2,2,2,2);//sample

function calc_1($temp_array){//first
    $total=0;
    $count = count($temp_array)+1;
    foreach($temp_array as $value){
        $total += $count*$value;
        $count-=1;
    }  
    return $total;
}
function calc_2($temp_array){//second
    $total=0;
    foreach($temp_array as $k=>$value){
        $total += ($k%2==0) ? 1*$value : 3*$value;//when is even or odd
    }  
    return $total;
}
var_dump(calc_1($temp_array));//resp1
var_dump(calc_2($temp_array));//resp2

答案 2 :(得分:0)

为您的结果

$temp_calc = 10*$temp_array[0]+9*$temp_array[1]+8*$temp_array[2]+7*$temp_array[3]+6*$temp_array[4]+5*$temp_array[5]+4*$temp_array[6]+3*$temp_array[7]+2*$temp_array[8];

你应该循环如下。它将循环运行到temp_array的第8个索引,并将每个索引值与$i相乘,并在变量$temp_calc_1中求和。

<?php
$temp_calc_1 = 0;
for($i=0;$i<9;$i++){
    $temp_calc_1 = $temp_calc_1 + ( 10-$i)*$temp_array[$i] ;
}

第二个结果

$temp_calc = 1*$temp_array[0]+3*$temp_array[1]+1*$temp_array[2]+3*$temp_array[3]+1*$temp_array[4]+3*$temp_array[5]+1*$temp_array[6]+3*$temp_array[7]+1*$temp_array[8]+3*$temp_array[9]+1*$temp_array[10]+3*$temp_array[11];

上面应该转换为以下循环,这将循环到你的第12个索引temparray并进行计算。这次它将temparray的每个索引值乘以1和3.所以第一次它将乘以1,下一次乘以3,依此类推

//
$temp_calc_2 = 0;
for($i=0;$i<12;$i++){
    $j = $i%2?3:1;
    $temp_calc_2 = $temp_calc_2 + $j*$temp_array[$i] ;
}
?>

答案 3 :(得分:0)

如果你的数组被称为$myArray,那么:

/*Since I can't know what the sequence of the values are that you
are multiplying, and because you might need other sequences in the
future, a function was developed that chooses which sequence you
want to multiply.*/

function findSomeValues($arraySize)
{
  switch ($arraySize) {
    case 9:
    {
      $someValues = array(10,9,8,7,4,5,4,3,2);
    }
    break;
    case 12:
    {
      $someValues = array(1,3,1,3,1,3,1,3,1,3,1,3);
    }
    break;
    default:
      $someValues = array();
  }

  return $someValues;
}

/*This following function then finds how big your array is, looks
for a sequence stored in the findSomeValues function. If a sequence
exist for that array size (in this case if you have an array either
9 or 12 elements long), the result will be calculated and echoed. If
the sequence was not found, an error message would be echoed.*/

function multiplyValues($myArray) {
  $result = 0;
  $arraySize = count($myArray);//obtaining array size
  $someValues = findSomeValues($arraySize);//obtaining sequence to multiply with
  if (count($someValues)>0)
  {
    for($i=0;i<$arraySize;$i++){
      $result += $myArray[i]*$someValues[i];
    }
    echo "result = ".$result."<br>";//result message
  }
  else
  {
    echo "you are missing some values<br>";//error message
  }
}

如果这对您有用,请告诉我。

<强>替代:

如果您更喜欢更简单的东西:

//this array holds the sequences you have saved:
$sequenceArray = array(
  9 => array(10,9,8,7,4,5,4,3,2),
  12 => array(1,3,1,3,1,3,1,3,1,3,1,3)
);

//this function does the multiplication:
function multiplyValues($myArray)
{
  $arraySize = count($myArray);
  for($i=0;i<$arraySize;$i++){
    $result += $myArray[i]*$sequenceArray[i];
  }
  echo "result = ".$result."<br>";//result message
}