【发布时间】:2018-01-05 21:42:42
【问题描述】:
我在 php 中有数组
$a = array(1,2,3,4,5);
当我使用条件数组值 = 6 回显 $a 时,它将显示 1+5 和 2+4
【问题讨论】:
-
你看到我的回答了吗?
标签: php arrays for-loop sum conditional-statements
我在 php 中有数组
$a = array(1,2,3,4,5);
当我使用条件数组值 = 6 回显 $a 时,它将显示 1+5 和 2+4
【问题讨论】:
标签: php arrays for-loop sum conditional-statements
描述有点糟糕,但我想我明白了。
这将遍历 $a 并找到产生总和的原因。
它对数组进行切片以确保它最后不会得到相同的匹配。 (1+5 和 5+1)。
$a = array(3,5,1,4,2,8,6,7,9,10);
Echo findsum(6, $a);
Function findsum($sum, $a){
Asort($a);
$a = Array_values($a);
Foreach($a as $key => $val){
If($val>=$sum) break;
$find = $sum - $val;
$subarr = array_slice($a, $key+1);
If (in_array($find, $subarr)) echo $val . "+" . $find . "\n";
}
}
输出:
1+5
2+4
编辑代码以提高数组的效率。
现在它对数组进行排序,当它查看的值大于或等于它找到的总和时,它将停止。
理论上。它应该可以停止If($val>=$sum/2) break;,但我不确定
【讨论】: