如果 value 松散等于 null,则分配默认数组元素值

问题描述 投票:0回答:2

我正在尝试在数组内添加 if-else 语句。

这是我的代码:

$excelData = array(
    $users->name,
    $users->first_name . ' ' . $organization->last_name,
    $users->user_email,
    date('d M y', $timestamp),
    if ($users->amount == NULL) {
        echo 0;
    } else {
        $users->amount;
    },
    if ($users->coupon_code == NUll) {
        echo "No Coupon Code";
    } else {
        $users->coupon_code;
    },
);

如果正常访问的值松散等于 null,如何设置默认值?

php arrays default-value conditional-operator
2个回答
1
投票

If/else 结构不适合像这样内联使用。 它们不产生值,而是执行操作。 您想要做的是有一个产生值的单个表达式。 三元条件运算符可用于此目的。 (在该链接上向下滚动到标题为“三元运算符”的部分。)

例如,这个表达式产生一个值:

$users->amount == NULL ? 0 : $users->amount

它将根据条件评估为

0
$users->amount
。 所以在你的代码中你会有:

$excelData = array(
    $users->name,
    $users->first_name . ' ' . $organization->last_name,
    $users->user_email,
    date('d M y', $timestamp),
    $users->amount == NULL ? 0 : $users->amount,
    $users->coupon_code == NULL ? "No Coupon Code" : $users->coupon_code
);

0
投票

对 null 的松散比较等同于进行错误检查。如果为空、假、空、零,简写三元数将是回退到默认值的最优雅的方式。

$excelData = [
    $users->name,
    "$users->first_name $organization->last_name",
    $users->user_email,
    date('d M y', $timestamp),
    $users->amount ?: 0,
    $users->coupon_code ?: 'No Coupon Code',
];
© www.soinside.com 2019 - 2024. All rights reserved.