在PHP中,我有一个这样的数组:
$BulkArray[$i]
这个数组有很多数字(例如1=>100、2=>300、3=>100,依此类推)。现在我想在整个数字范围内,找到一个等于或小于500的数字的最大序列。我想写下序列号。
例如,我有阵列
1 => 100, 2 => 300, 3 => 100,
4 => 50, 5 => 50, 6 => 50, 7 => 50, 8 => 50,
9 => 500, 10 => 200, 11 => 100
正如你所看到的,数字1,2&3在一起是500。所以这是第一次继承。
2,3,4,5加在一起也是500。(此序列(4)比第一个序列(3)大)
依此类推,然后你会得到最高的序列号:3,4,5,6,7,8(有6个数字的序列号),即350(但低于500米,正如我们搜索的那样)
现在,我如何使用Array进行编写:$BulkArray[$i]
,则最高序列是6?
因为6是整个数组中500的最高序列!
(用于对特定的Carparts进行分类)
用户"fas M"的答案再次出现,改进不大:
<?php //lets call your $BulkArray = $values;
$values=array( 1 => 100, 2 => 300, 3 => 100,
4 => 50, 5 => 50, 6 => 50, 7 => 50, 8 => 50,
9 => 500, 10 => 200, 11 => 100 );
$sum=0; // to sum up until 500
$Vals500=array(); // array to store index with <= 500
$i=0; // index for new aaray that will store keys that made up <= 500
$key1=1; //value to iterate the array defined above
for($key=1; $key <= count($values); $key++){
$sum = $sum + $values[$key]; // get sum of values
if($sum <= 500){ $Vals500[$i][]=$key; } //append all key of sum ==500
if($sum >= 500) { $i++; $key=$key1++; $sum=0; } //check sum then reintialize
//added bigger equal
}
echo count(max($Vals500)); // read out the biggest succession
?>
再次感谢fas M!
单击此处或此处,您可以看到一些
<?php //lets call your $BulkArray = $values;
$values=array( 1 => 100, 2 => 300, 3 => 100,
4 => 50, 5 => 50, 6 => 50, 7 => 50, 8 => 50,
9 => 500, 10 => 200, 11 => 100 );
$sum=0; // to sum up until 500
$Vals500=array(); // array to store index with <= 500
$i=0; // index for new aaray that will store keys that made up <= 500
$key1=1; //value to iterate the array defined above
//print_r($values); echo '<br/>';
for($key=1; $key <= count($values); $key++){
$sum = $sum + $values[$key]; // get sum of values
if($sum <= 500){ $Vals500[$i][]=$key; } //append all key of sum ==500
if($sum == 500) { $i++; $key=$key1++; $sum=0; } //check sum then reinitialize values
}
foreach($Vals500 as $val){} //search for second array with many indeces in $Vals500. NB: i fail this place
echo print_r($Vals500);
print 'the highest succession found is '; print_r($Vals500[2]); //
?>