Сравнение двух массивов php
Помогите пожалуйста разобраться с массивами. Уже битый час мучаюсь, не могу никак придумать как из двух массивов данных получить результаты. Пишу на php. Первый массив:
array(
array(
"id"=> "1",
"name"=> "test",
"count"=> 15
),
array(
"id"=> "2",
"name"=> "test2",
"count"=> 8
),
array(
"id"=> "3",
"name"=> "test3",
"count"=> 0
)
)
Второй массив:
array(
array(
"id_pos" => "a1",
"id" => "1",
"count" => 10
),
array(
"id_pos" => "a1",
"id" => "1",
"count" => 10
),
array(
"id_pos" => "a2",
"id" => "2",
"count" => 5
),
array(
"id_pos" => "a3",
"id" => "3",
"count" => 2
)
array(
"id_pos" => "a4",
"id" => "4",
"count" => 20
)
Суть вопроса: Есть массив с данными id и count, id уникален. Есть второй массив, в котором уникален id_pos, нужно по id найти count в первом массиве и перенести с измененным count в третий массив. Загвоздка в том что таких id во втором массиве может быть несколько, соответственно нужно распределить count из первого массива на все одинаковые id во втором. Так же если count в первом массиве равно 0 тогда этот подмассив нужно перенести в четвертый массив. И если id из второго массива не находится в первом, значит переносится в третий массив неизменным. На выходе должно получится что то типа:
array(
array(
"id_pos" => "a1",
"id" => "1",
"count" => 10
),
array(
"id_pos" => "a1",
"id" => "1",
"count" => 5
),
array(
"id_pos" => "a2",
"id" => "2",
"count" => 8
),
array(
"id_pos" => "a4",
"id" => "4",
"count" => 20
)
четвертый массив:
array(
array(
"id_pos" => "a3",
"id" => "3",
"count" => 0
)
)
Ответы (1 шт):
$array1 = [
["id"=> "1", "name"=> "test", "count"=> 15],
["id"=> "2", "name"=> "test2", "count"=> 8],
["id"=> "3", "name"=> "test3", "count"=> 0]
];
$array2 = [
["id_pos" => "a1", "id" => "1", "count" => 10],
["id_pos" => "a1", "id" => "1", "count" => 10],
["id_pos" => "a2", "id" => "2", "count" => 5],
["id_pos" => "a3", "id" => "3", "count" => 2],
["id_pos" => "a4", "id" => "4", "count" => 20]
];
$array3 = [];
$array4 = [];
foreach ($array2 as $item2) {
$found = false;
foreach ($array1 as &$item1) {
if ($item2['id'] === $item1['id']) {
if ($item1['count'] > 0) {
$count_per_item = ceil($item1['count'] / count($found));
$item1['count'] -= $count_per_item;
$item3 = [
"id_pos" => $item2['id_pos'],
"id" => $item2['id'],
"count" => $count_per_item
];
$array3[] = $item3;
$found[] = true;
} else {
$item4 = [
"id_pos" => $item2['id_pos'],
"id" => $item2['id'],
"count" => 0
];
$array4[] = $item4;
$found[] = true;
}
continue 2;
}
}
$array3[] = $item2;
}
unset($item1);
var_dump($array3);
var_dump($array4);