三元陈述未按预期测试价值

时间:2012-11-26 01:57:19

标签: php

我怎么能把这个if语句变成三元语句?

if ( !empty($vendor_address_row['address2'])){
    $address_obj['address2'] = $vendor_address_row['address2'];
    }else{
    $address_obj['address2'] = '<tr><td colspan="1">'.$address_row['address2'].'</td></tr>';    
    }

我有特里

$vendor_address_row['address2'] ? $address_obj['address2'] = '<tr><td colspan="1">'.$address_row['address2'].'</td></tr>' : $address_obj['address2'] = '';

!empty($vendor_address_row['address2']) ? $address_obj['address2'] = '<tr><td colspan="1">'.$address_row['address2'].'</td></tr>' : $address_obj['address2'] = '';

都没有工作。除此之外,可能还有一种更短的方法。非常感谢你。

3 个答案:

答案 0 :(得分:1)

这取决于是否始终定义$vendor_address_row['address2']

如果是(和版本&gt; = 5.3):

$address_obj['address2'] = $vendor_address_row['address2'] ?: '<tr><td colspan="1">'.$address_row['address2'].'</td></tr>';

或(版本&lt; 5.3):

$address_obj['address2'] = $vendor_address_row['address2'] ? $vendor_address_row['address2'] : '<tr><td colspan="1">'.$address_row['address2'].'</td></tr>';

它不是:

$address_obj['address2'] = !empty($vendor_address_row['address2']) ? $vendor_address_row['address2'] : '<tr><td colspan="1">'.$address_row['address2'].'</td></tr>';

如果需要,您可以撤消操作数以摆脱!empty()

答案 1 :(得分:0)

这应该是:

echo $address_obj['address2'] = !empty($vendor_address_row['address2']) ? $vendor_address_row['address2'] : ('<tr><td colspan="1">'.$address_row['address2'].'</td></tr>');

或将其保存到变量:

$address_obj['address2'] = !empty($vendor_address_row['address2']) ? $vendor_address_row['address2'] : ('<tr><td colspan="1">'.$address_row['address2'].'</td></tr>');

答案 2 :(得分:0)

应该是

$address_obj['address2'] = empty($vendor_address_row['address2']) ? '<tr><td colspan="1">'.$address_row['address2'].'</td></tr>' : $vendor_address_row['address2'] ;