【问题标题】:How to compute every array values of two foreach in PHP Laravel如何在 PHP Laravel 中计算两个 foreach 的每个数组值
【发布时间】:2018-04-19 08:34:28
【问题描述】:

你好,有没有办法在 laravel 或 php 中获得两个 foreach 的区别。这是我的示例代码

    @foreach($budgets as $budget)
         $budget->b_amount
    @endforeach

    @foreach($purchases as $purchase)
       $purchase->p_amount
    @endforeach

所以基本上我需要获取每个 foreach 的所有值,然后取每个值的差异。有没有办法做到这一点?像这样的...

 <?php 
  $diff =  $budget->b_amount - $purchase->p_amount;
 ?>

非常感谢。

【问题讨论】:

  • 每个数组的总数之差?那是你要的吗? (样本数据和期望的结果会特别有用)
  • 是每个数组的区别。
  • 你还是不清楚。您是说要从 $budgets 数组中获取第一个值,然后从 $purchases 数组中的第一个值中减去它吗?然后对第二个值执行此操作,然后对第三个值执行此操作,以此类推?
  • 是的,正是@NathanHeffley 先生。抱歉不清楚。希望你不要介意。谢谢谢谢。

标签: php arrays laravel foreach


【解决方案1】:
@if(count($budgets) == count($purchases))
@foreach($budgets as $key => $value)
     $diff[] = $budgets[$key]->b_amount - $purchases[$key]->p_amount
@endforeach
@endif

现在$diff 包含一系列差异。

【讨论】:

  • @kalawadei 如果这是您要寻找的答案,请不要忘记将我的答案选为已接受!
【解决方案2】:

首先,如果你能确保数组中的所有对象都是数值,你可以使用下面的函数:

function diff($budgets, $purchases) {
    $b = 0;
    $p = 0;
    foreach ($budgets as $budget) {
        $b += $budget;
    }
    foreach ($purchases as $purchase) {
        $p += $purchase;
    }
    return $b-$p;
}

此外,如果您只需要差异,请忽略 +/- 符号:

function diff($budgets, $purchases) {
    $b = 0;
    $p = 0;
    foreach ($budgets as $budget) {
        $b += $budget;
    }
    foreach ($purchases as $purchase) {
        $p += $purchase;
    }
    return abs($b-$p);
}

但是,如果您不确定数组中是否有数值:

function diff($budgets, $purchases) {
    $b = 0;
    $p = 0;
    foreach ($budgets as $budget) {
        $b += is_numeric($budget)?$budget:0;
    }
    foreach ($purchases as $purchase) {
        $p += is_numeric($purchase)?$purchase:0;
    }
    return $b-$p;
}

【讨论】:

    猜你喜欢
    • 2019-05-15
    • 2015-04-04
    • 2017-12-17
    • 2020-04-05
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    相关资源
    最近更新 更多