$array = array_fill(0, 50, 1);
$sum = 20;
function elements($array, $sum, &$result = [], $iteration = [])
{
// Если нужны все перестановки, то нужно закомментировать условие
if (!empty($result)) {
return;
}
if ($sum === 0) {
$result[] = $iteration;
return;
}
foreach ($array as $index => $value) {
if ($sum - $value < 0) {
continue;
}
$next = $array;
unset($next[$index]);
elements($next, $sum - $value, $result, array_merge($iteration, [$index]));
}
return;
}
elements($array, $sum, $result);
// Если вытащены все возможные перестановки, то разкомментировать
// Отсортируем, чтоб убрать повторяющиеся элементы
//foreach ($result as &$item) {
// sort($item);
//}
//unset($item);
//$result = array_unique($result, SORT_REGULAR);
foreach ($result as $item) {
echo 'Индексы элементов массива, составляющих сумму: ' . implode(' ', $item) . \PHP_EOL;
}
<?php
$array = [1, 2, 3, 4, 5];
$SUM = 7;
$LIMIT = 1 << count($array);
for ($set = 0; $set < $LIMIT; $set++) {
$s = 0;
for ($i = 0; $i < count($array); $i++)
if ((1 << $i) & $set) $s += $array[$i];
if ($s == $SUM) {
echo 'Индексы элементов массива, составляющих сумму: ';
for ($i = 0; $i < count($array); $i++)
if ((1 << $i) & $set) echo $i, ' ';
break;
}
}
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} site.ru$
Rewriterule ^robots.txt$ web/robots.txt [L]
select
t1.id,
t1.sum_ordered - ifnull(t2.sum_sold, 0)
from (select id, sum(amount) as sum_ordered from ordered group by id) t1
left join (select id, sum(amount) as sum_sold from sold group by id) t2 on t2.id = t1.id
$query = Categories::find()->with('productsByPrice')->all();
public function getProductsByPrice () {
return $this->hasMany(Products::className(), ['category_id' => 'id'])->orderBy('price');
}
$query = Products::find()->with('category')->orderBy('price')->all();
$query = Products::find()->andWhere(['category_id'=>$id])->orderBy('price')->all();