PHP - 从 key = 相同的 2 个对象中减去值

PHP - Subtract value from 2 objects where key = is the same

我不确定我是否正确地写了这个问题,但我会详细说明我需要什么。

我有两个对象需要更改为数组,它们有键 1、2、3,但它们有不同的值我需要从键相同的数组中减去值,我希望这使得感觉。

我尝试过的事情

感谢所有帮助,如果需要更多信息,我们将提供

示例数组:

数组 1

1 => 300.00,
2 => 300.00,
3 => 300.00

数组 2

1 => 200.00,
2 => 200.00,
3 => 200.00

期望的输出

1 => 100.00,
2 => 100.00,
3 => 100.00

最好的选择似乎是 for 循环

$arr1 = [300, 300, 300];
$arr2 = [200, 200, 200];

$arr_length = sizeof($arr1) -1;

$minus_arr = [];

for($i = 0; $i <= $arr_length; $i++){
    $minus = $arr1[$i] - $arr2[$i];
    array_push($minus_arr, $minus);
}

print_r($minus_arr);

我认为你上面给定的数组是理所当然的,听起来你使用的数组大小不一样,或者里面有字符串或空值,所以先检查一个 int。

    <?php

$arr1 = [300, 300, 300];
$arr2 = [200, 200, 200];

$arr_length = sizeof($arr1) -1;

$minus_arr = [];

for($i = 0; $i <= $arr_length; $i++){
    if(is_int($arr1[$i]) && is_int($arr2[$i])){
        $minus = $arr1[$i] - $arr2[$i];
        array_push($minus_arr, $minus);
    }
}

print_r($minus_arr);

希望我没有误解你的问题。

我的方法是遍历2个数组,只要它们的key相同,就进行运算。这是一个例子:

function diff($arr1, $arr2) {
    $result = [];
    foreach($arr1 as $key1 => $value1) {
        foreach($arr2 as $key2 => $value2) {
            if ($key1 == $key2) {
                $result[$key1] = $value1 - $value2;
            }
        }
    }
    return $result;
}

我看到你的标签中有 Laravel,如果你使用 laravel,我相信你可以使用 Collection 更好地实现这一点。该文件是here。它为你提供了一种更'OO'的方式(类似于javascript)你可以在php.

中操作数组

对于索引数组,

function diff($arr1, $arr2){      
    $arr3=array();
    for($i=0;$i<count($arr1);$i++){
        $arr3[$i]=$arr1[$i]-$arr2[$i];
    }
    print_r($arr3);
}
$arr1=array(300,300,300);
$arr2=array(100,100,100);
diff($arr1, $arr2);
//Displays 200, 200, 200, as expected