配列内の値のさまざまな組み合わせを特定の数値と一致させたい。
例えば:
number = 10
Array (2, 6, 5, 3, 4)
一致が返されます: 6 + 4 = 10
,2 + 3 + 5 = 10
考えられるすべての組み合わせをループできますが、問題を解決するためのより高速または簡単な方法はありますか?
配列内の値のさまざまな組み合わせを特定の数値と一致させたい。
例えば:
number = 10
Array (2, 6, 5, 3, 4)
一致が返されます: 6 + 4 = 10
,2 + 3 + 5 = 10
考えられるすべての組み合わせをループできますが、問題を解決するためのより高速または簡単な方法はありますか?
答えには小さな問題があり、すべての組み合わせ、つまり 2,3,5 と 3,2,5 などを返します。
<?php
$array = array(2, 6, 5, 3, 4);
function depth_picker($arr, $temp_string, &$collect) {
if ($temp_string != "")
$collect []= $temp_string;
for ($i=0; $i<sizeof($arr);$i++) {
$arrcopy = $arr;
$elem = array_splice($arrcopy, $i, 1); // removes and returns the i'th element
if (sizeof($arrcopy) > 0) {
depth_picker($arrcopy, $temp_string ."," . $elem[0], $collect);
} else {
$collect []= $temp_string. "," . $elem[0];
}
}
}
$collect = array();
depth_picker($array, "", $collect);
foreach($collect as $val)
{
$sum = array_sum(explode(",",$val));
if($sum == 10){
print_r($val);
echo "<br>";
}
}
?>