【问题标题】:IF Conditional in a Formula in PHP [duplicate]PHP中公式中的IF条件[重复]
【发布时间】:2020-12-10 08:58:54
【问题描述】:

我怎么能在PHP中做这个小功能,我的具体疑问是在我分享的代码中使用IF条件的部分,这无法运行,我不知道我是否可以做点什么就像在 PHP 中那样,我怎样才能正确地做到这一点。非常感谢您的帮助!

function updateAvg_noi($bean, $event, $arguments)
         {
            $bean->avg_noi_c = ($bean->year_1_noi_c + $bean->year_2_noi_c + $bean->year_3_noi_c) / 
            (
                (if($bean->year_1_c == NULL){0;}else{1;}) + 
                (if($bean->year_2_c == NULL){0;}else{1;}) + 
                (if($bean->year_3_c == NULL){0;}else{1;})
            );
         }

【问题讨论】:

标签: php if-statement


【解决方案1】:

在这种情况下,您正在寻找三元运算符

function updateAvg_noi($bean, $event, $arguments) {
    $bean->avg_noi_c = ($bean->year_1_noi_c + $bean->year_2_noi_c + $bean->year_3_noi_c) / (
        (($bean->year_1_c == NULL) ? 0 : 1) + 
        (($bean->year_2_c == NULL) ? 0 : 1) + 
        (($bean->year_3_c == NULL) ? 0 : 1)
    );
}

【讨论】:

  • 非常感谢,您的建议对我帮助很大。 :)
【解决方案2】:

如果您有大量年份输入,这只是进行计算的另一种方法。前任。第 4 年,第 5 年,...

<?php

// Alternatives using array_sum

// Ex. Ternary operator
$numerators = [
    $bean->year_1_noi_c, 
    $bean->year_2_noi_c, 
    $bean->year_3_noi_c
];

$denominators = [
    $bean->year_1_c === null ? 0 : 1,
    $bean->year_2_c === null ? 0 : 1,
    $bean->year_3_c === null ? 0 : 1,
];

$output = array_sum($numerators) / array_sum($denominators);


/***********************************************************/


// Ex. Check is_null, inverse, cast to int
$numerators = [
    $bean->year_1_noi_c, 
    $bean->year_2_noi_c, 
    $bean->year_3_noi_c
];

$denominators = [
    (int)!is_null($bean->year_1_c),
    (int)!is_null($bean->year_2_c),
    (int)!is_null($bean->year_3_c)
];

$output = array_sum($numerators) / array_sum($denominators);

【讨论】:

  • 非常感谢,这更复杂,也适用于我。 :)
猜你喜欢
  • 1970-01-01
  • 2014-06-29
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
相关资源
最近更新 更多