php объединяет и сортирует массив по количественному правилу (Laravel 5.6) - PullRequest
0 голосов
/ 09 сентября 2018

Я застрял) Есть два массива, $a и $b.Я хочу взять и "отсортировать" значения из $b, чтобы получить $final массив, подобный этому:

array:6 [
  0 => [1 => 1]
  1 => [1 => 3]
  2 => [1 => 5]
  3 => [2 => 7]
  4 => [3 => 9]
  5 => [3 => 11]
]

, но я получаю этот неправильный массив:

array:6 [
  0 => [1 => 1]
  1 => [1 => 3]
  2 => [1 => 5]
  3 => [2 => 1]
  4 => [3 => 1]
  5 => [3 => 3]
]

Код:

$final = [];
$c = 0;
$a = [3,1,2];
$b = [1,3,5,7,9,11];

foreach($a as $k => $v){
    $c++;
    foreach($b as $key => $val){
        if($v > $key)
            $final[] = [$c => $val];
    }
}
dump($final);

Как определить, если оператор внутри foreach ($ b) для также проверяет, что $ key должен быть больше его предыдущего значения?Потому что я вижу, что неправильный массив по 3-му индексу берет первый элемент из $b ( .. 3 => [2 => 1] .. )

Пробовал разные подходы, но безуспешно.

1 Ответ

0 голосов
/ 09 сентября 2018

Если вы можете изменить массив a, проще сделать это:

$i=0; // Index of array a
foreach($b as $v){
    // while a[$i] is not zero
    if(! $a[$i]) {
       // Go next item of array a
       $i++;
    } 
    // Put to final array  
    $final[] = [$i+1 => $v];
    // Decrease counter
    $a[$i]--;

}
print_r($final);

демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...