сравните 2 массива с помощью ключей и вычтите значения на основе ключей в переполнении стека

У меня есть 2 массива с ключами и значениями, хочу вычесть 2 значения массива на основе ключей,

Ниже приведен код, что я пробовал,
первый массив (с ключом и значениями):

   $bulk_service_vals_id4 =  '101,102,103,104';
$new_bulk_service_vals_id4 = explode(',',$bulk_service_vals_id4);

$bulk_service_vals4 =  '2,1,3,2';
$new_bulk_service_vals4 = explode(',',$bulk_service_vals4);

Второй массив (с ключом и значениями):

    $booked_service_id =  '101,101,104,103,104';
$new_booked_service_id = explode(',',$booked_service_id);
print_r(array_unique($new_booked_service_id));
$book_unique_service_id = array_unique($new_booked_service_id);

$book_unique_service_val = array();
foreach($book_unique_service_id as $new_booked_service_idss)
{
//echo $new_booked_service_idss;
$book_unique_service_val[] = substr_count($booked_service_id,$new_booked_service_idss).'<br>';
}
print_r($book_unique_service_val);

Объедините два массива:

    $key_val1 =array_combine($new_bulk_service_vals_id4,$new_bulk_service_vals4);
print_r($key_val1);
$key_val2 =array_combine($book_unique_service_id,$book_unique_service_val);
print_r($key_val2);

вывод первого ключа массива со значениями:

   key : 101,102,103,104
values: 2,1,3,2

вывод второго ключа массива со значениями:

  key: 101,104,103
values: 2,2,1

я хочу получить окончательный вывод, как в формате «Тихи»:

 key: 101,102,103,104
values: 0,1,2,0

пожалуйста, сделайте мои потребности.

@Спасибо..

1

Решение

$ a1 и $ a2 — это два массива.

$result = array();

foreach($a1 as $k => $v)
$result[$k] = array_key_exists($k, $a2) ? $v - $a2[$k] : $v;
0

Другие решения

Вы можете использовать foreach и проверить, существует ли ключ из первого массива во втором массиве. Если это так, вычтите значение:

$key_val1 = [
101 => 2,
102 => 1,
103 => 3,
104 => 2
];

$key_val2 = [
101 => 2,
104 => 2,
103 => 1
];

foreach ($key_val1 as $key => &$value) {
if (array_key_exists($key, $key_val2)) {
$value -= $key_val2[$key];
}
}
unset ($value);

print_r($key_val1);

Array
(
[101] => 0
[102] => 1
[103] => 2
[104] => 0
)

демонстрация

0

По вопросам рекламы [email protected]