Нда... постановка задачи на "уровне" )))
есть массив:
$names[0]="200";
$names[1]="400";
$names[2]="600";
$names[3]="800";
$names[4]="1000";
есть значения:
$a = 1; // Это стартовая ячейка/позиция в массиве, от которой вести подсчет суммы
$b = 1900; // Это максимальное значение, выше которого сумма не должна превышать.
$c = ''; // Это искомое значение, которое будет являться позицией в массиве $names, при прибавлении значения которой, будет превышать наше условие.
$names[0]="200";
$names[1]="400";
$names[2]="600";
$names[3]="800";
$names[4]="1000";
$a = 1;
$b = 1900;
$c = '';
$tmp_summ = 0;
$tmp_string = '';
foreach( $names as $names_key => $names_value )
{
if ( $names_key < $a ) continue;
$tmp_string[] = $names_value;
$tmp_summ = $tmp_summ + $names_value;
if ( isset( $names[$names_key+1] ) )
{
if ( ( $tmp_summ + $names[$names_key+1] ) >= $b )
{
echo "Действия: ". implode( "+", $tmp_string ) . " = " . array_sum( $tmp_string ) . "<br>\n";
$c = $names_key+1;
echo "\$a = " . $a . "<br>\n";
echo "\$b = " . $b . "<br>\n";
echo "\$c = " . $c . "<br>\n";
echo "delta = " . ( $b - $tmp_summ ). "<br>\n";
die;
}
}
else
$c = $names_key;
}
echo "Действия: ". implode( "+", $tmp_string ) . " = " . array_sum( $tmp_string ) . "<br>\n";
echo "\$a = " . $a . "<br>\n";
echo "\$b = " . $b . "<br>\n";
echo "\$c = " . $c . "<br>\n";
Результат
Действия: 400+600+800 = 1800
$a = 1
$b = 1900
$c = 4
delta = 100
Если допустим указать Больше значение $b, например:
$b = 2900;, то результат будет таким
Действия: 400+600+800+1000 = 2800
$a = 1
$b = 2900
$c = 4