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

时间:2016-07-21 13:04:27

标签: php arrays laravel laravel-5.1

我不确定我是否正确地写了这个问题,但更详细地说明了我需要的东西。

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

我尝试过的事情

  • 将它们都推到1个阵列并从那里做数学计算(无法弄清楚如何做到这一点)
  • 使用array_diff查找数组中的差异,但不起作用。

所有帮助表示将提供所需的更多信息

示例数组:

阵列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

3 个答案:

答案 0 :(得分:1)

这个的最佳选择似乎是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);

答案 1 :(得分:1)

我希望我不会误解你的问题。

我的方法遍历2个数组,每当它们的键相同时,执行操作。这是一个例子:

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中操作数组。

答案 2 :(得分:1)

对于索引数组,

>>> "".join(str(ord(x)) for x in getname)
'116101115116'