You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何借助三元运算符生成不含0值的td id属性?

问题解决思路与代码修改

你的代码当前的问题是:当$orientationData1为0时,三元运算符的写法会给数组添加上无效的键值对,而不是完全不生成id属性。要实现仅当$orientationData1 > 0时才给td设置id,可以用以下两种方式通过三元运算符达成:

方式一(PHP 7.4及以上版本推荐)

借助PHP 7.4支持的数组展开运算符(...),让三元运算符根据条件返回包含id的数组或者空数组,展开后就只会在符合条件时添加该属性:

$orientationData = explode('_', $generate_table['orientation']);
foreach ($orientationData as $orientationData1) {
    $get_ori = $this->o->get_orientation($orientationData1);
    $table_row[$td++] = [
        'data' => $get_ori,
        'style' => 'text-align:center;',
        'class' => 'editable',
        ...($orientationData1 > 0 ? ['id' => $orientationData1] : [])
    ];
}

方式二(兼容所有PHP版本)

如果你的项目还在使用PHP 7.4以下的版本,可以先构建基础的行数据数组,再通过三元运算符判断是否追加id键:

$orientationData = explode('_', $generate_table['orientation']);
foreach ($orientationData as $orientationData1) {
    $get_ori = $this->o->get_orientation($orientationData1);
    $rowData = [
        'data' => $get_ori,
        'style' => 'text-align:center;',
        'class' => 'editable'
    ];
    // 用三元运算符决定是否添加id属性
    $orientationData1 > 0 ? $rowData['id'] = $orientationData1 : null;
    $table_row[$td++] = $rowData;
}

原代码的问题说明

你原来的写法$orientationData1>0?'id'=>$orientationData1存在逻辑缺陷:当条件不满足(值为0)时,三元运算符会返回$orientationData1的值(也就是0),但数组语法要求是键=>值,所以实际会生成0 => 0这样的无效键值对,这显然不是你想要的结果。上面的两种修改方式都能精准控制,只有当值大于0时才添加id属性。

内容的提问来源于stack exchange,提问作者John David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:33:10