1252748
1252748

Reputation: 15369

ternary statement not testing value as expected

How could I turn this if-statement into a ternary statement?

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>';    
    }

I have trie

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

and

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

Neither work. And there is probably a shorter way to do it besides. Thank you very much.

Upvotes: 0

Views: 41

Answers (3)

Ja͢ck
Ja͢ck

Reputation: 173652

It depends on whether $vendor_address_row['address2'] is always defined or not.

If it is (and version >= 5.3):

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

Or (version < 5.3):

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

It it isn't:

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

You can reverse the operands to get rid of the !empty() if you want.

Upvotes: 1

Baba
Baba

Reputation: 95161

It should be

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

Upvotes: 0

Samuel Cook
Samuel Cook

Reputation: 16828

this should be:

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

or to save it to a variable:

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

Upvotes: 0

Related Questions