Как сделать конкретное слияние - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь объединить два массива в один результат

$array1 =["pack_id","pack_name","cash"];

$array2 =["pack_id","pack_name","inactifs","actifs","total"];

Мой код ниже:

 for ($i = 0; $i < count($cashByPacks); $i++) {
            $result[$i] = array('pack_id' => $cashByPacks[$i]->pack_id, 'pack_name' => $cashByPacks[$i]->pack_name, 'effectif' => 0, 'cash' => $cashByPacks[$i]->cash ?? 0, 'actif' => 0, 'inactif' => 0, 'percent' => 0);

            for ($j = 0; $j < count($query); $j++) {
                if (array_search($query[$j]->pack_id, $result[$i])) {
                    $result[$j] = array('pack_id' => $query[$j]->pack_id, 'pack_name' => $query[$j]->pack_name, 'effectif' => $query[$j]->total, 'actif' => $query[$j]->actifs, 'inactif' => $query[$j]->inactifs, 'cash' => $cashByPacks[$i]->cash ?? 0, 'percent' => ($cashByPacks[$i]->cash == 0) ? 0 : round(($cashByPacks[$i]->cash / $totalcash) * 100, 2));
                }

            }
        }
        return $result;

Я ожидаю, что на выходе будет один массив, содержащий:

["pack_id","pack_name","cash","actifs","inactifs","totale"] 

1 Ответ

0 голосов
/ 23 мая 2019

Используйте array_merge и array_diff.
Array_diff находит различия между двумя массивами, а array_merge объединяет их.

$arr1 = ["pack_id","pack_name","cash"];

$arr2 =["pack_id","pack_name","inactifs","actifs","total"];

$res = array_merge($arr1, array_diff($arr2, $arr1));

var_dump($res);

Или используйте array_merge и array_unique.
Array_merge объединит два массиваи создайте дубликаты, array_unique удалит дубликаты.

$arr1 = ["pack_id","pack_name","cash"];

$arr2 =["pack_id","pack_name","inactifs","actifs","total"];

$res = array_unique(array_merge($arr1, $arr2));

var_dump($res);
...