PHP 数组 with with If Empty 语句,以逗号分隔

PHP array with with If Empty statement, separated by coma

所以我把这个地址格式数组放在一起,效果非常好:

$address_street = get_field( 'address_street' );
$address_city = get_field( 'address_city' );
$address_postcode = get_field( 'address_postcode' );
$address_state = get_field( 'address_state' ); 
$terms = get_the_terms($post->id, 'address_country');

foreach ( $terms as $term ) { }
?>

<div id="address-widget">
    <p><strong>Where to find us?</strong></p> 

    <?php $arr = array($address_street, $address_city, $address_postcode, $address_state, $term->name); ?>

    <p class="address-format">
        <?php echo implode(", ", $arr); ?>
    </p>
</div>

它输出地址的所有细节,用逗号分隔,就像我想要的那样。

现在的问题是$address_street, $address_postcode and $address_state不是必填项,所以如果不填写,就会留空,没有额外的逗号。

所以我可以在这里找到如何输入带有条件项的数组:How can I add a condition inside a php array?,但是我如何在数组中添加条件,保留空白并将填写的元素分隔开同时昏迷?

所以如果只填写必填字段(城市,国家),我会得到这样的输出:城市,国家

如果我没猜错,解决方案可能比您想象的要简单。您想要的是以逗号分隔的字符串打印所有数组值(如果它们不为空)。你可以做的是在打印时简单地从数组中删除空元素:

<?php echo implode(", ", array_filter($arr)); ?>

这将在将数组分解为逗号分隔的字符串之前从数组中删除空元素。

您可以尝试在内爆之前从数组中删除空值:

$arr = array_filter($arr);

查看有关 array_filter() 函数的更多信息。

if(get_field( 'address_street' ) != ''){

$address_street = get_field( 'address_street' ); }

if(get_field( 'address_city' ) != ''){

$address_city = get_field( 'address_city' ); }

if(get_field( 'address_postcode' ) != ''){

$address_postcode = get_field( 'address_postcode' ); }

if(get_field( 'address_state' ) != ''){

$address_state = get_field( 'address_state' ); }