У меня есть 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
пожалуйста, сделайте мои потребности.
@Спасибо..
$ a1 и $ a2 — это два массива.
$result = array();
foreach($a1 as $k => $v)
$result[$k] = array_key_exists($k, $a2) ? $v - $a2[$k] : $v;
Вы можете использовать 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
)