$arr    =  [30,50,90,150];
$price =  200;
$i = 0;

if(count($arr) > 0)
{  
     do{    
          if($price > $arr[$i])
          {        
               $price -= $arr[$i];
               unset($arr[$i]);
               $i++;
           }
          else
          {
          $arr[$i]   =  $arr[$i] - $price;
          $price = 0;
          }
     }
     while($price > 0);
}
Biraz daha geliştirilebilir