skip to Main Content

I have an array of values both positive and negative:

$numbers=['10','-2','-1','8','-7','1','-2','-3'];

I need to echo the results as:

numbers[0]=10;
numbers[1]=8;
numbers[2]=7;
numbers[3]=8;
numbers[4]=1;
numbers[5]=1;
numbers[6]=-1;
numbers[7]=-4;

Basically I take the first value that is always positive, echo that value, subtract the first negative value, echo the results, the second, etc until I found the next positive value, I echo that value, subtract from this value that becomes now reference the second negative value and so on…

I tries this in a loop but I can’t manage to "break" the results after finding the second positive number – the numbers keep adding at the result from the first set of positive + negative values – even when using unset….

$i=0;
$sum=0;    
        
while ($i < count($numbers)){
            
    $sum=$sum+$numbers[i];
                    
                    
    if($numbers[i]>0)
    {
        echo $numbers[i];
    }
    else
    {
        echo $sum;
    }       
}

2

Answers


  1. You need to reset $sum to the number whenever you get a positive number.

    foreach ($numbers as $i => $num) {
        if ($num > 0) {
            $sum = $num;
        } else {
            $sum += $num;
        }
        echo "numbers[$i] = $sum<br>";
    }
    
    Login or Signup to reply.
  2. $numbers=['10','-2','-1','8','-7','1','-2','-3'];
    
       $i=0;
       // there is no need initializing sum here since you it will be the first number
       $sum=0;    
        
        while ($i < count($numbers)){
            
       //  $sum=$sum+$numbers[$i]; This is not needed
        
       if ($numbers[$i] > 0) {
          // if the $numbers[$i] is greater than 0 then it is a positive number
          // you set $sum to the new positive number
            $sum = $numbers[$i];
        } else {
          //else you perform arithmetic function here 
          // and since $numbers[$i] is a negetive number adding it will substract from $sum
            $sum += $numbers[$i];
        }
       //  You're concern about the sum so you should do your logic before echoing 
          echo $sum; 
       // Always remember to increment as while loop wont do that for you        
          $i++;
       }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search