我有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
我想获得最终的输出,例如tihis格式:
key: 101,102,103,104
values: 0,1,2,0
请满足我的需求。
@谢谢..
答案 0 :(得分:0)
$ a1和$ a2是两个数组。
$result = array();
foreach($a1 as $k => $v)
$result[$k] = array_key_exists($k, $a2) ? $v - $a2[$k] : $v;
答案 1 :(得分: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
)