如何借助三元运算符生成不含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
相关产品推荐
相关产品推荐

