2

これが本当に基本的なものである場合は申し訳ありませんが、私はPHPを学んでいます。

次のようなコードがあります。

<h4><?=$prop['house_number']?>, <?=$prop['street']?>, <?=$prop['town']?></h4>

これは、データベースから取得したものです。例: 55, メイン ストリート, 町名

住所に通りの名前が含まれていない場合は、次のように返されます: 55, , 町名.

コマーを削除する方法を知りたいので、例: 55, townname.

うまくいけば、それは本当に簡単なものですが、私はいくつかのことを試しましたが、うまくいかないようです.

どうもありがとう

4

7 に答える 7

3

配列を使用して値を保持し、implode()

このようなもの:

$result = array();

if (!empty($prop['house_number'])
    $result[] = $prop['house_number'];

if (!empty($prop['street'])
    $result[] = $prop['street'];

if (!empty($prop['town'])
    $result[] = $prop['town'];

$result = implode(',',$result);
于 2012-04-12T19:15:49.113 に答える
2

インライン条件を使用できます。これを試してください。

<?php
    $house_num=($prop['house_number']) ? $prop['house_number'].',' : null;
    $street=($prop['street']) ? $prop['street'].',' : null;
    $town=($prop['town']) ? $prop['town'] : null;
    $h4=$house.' '.$street.' '.$town;
?>

その後使用中:

<h4><?php echo($h4); ?></h4>
于 2012-04-12T19:17:09.490 に答える
2

交換

<?=$prop['street']?>,

<?php if(strlen($prop['street'] > 0) echo $prop['street'] . ", "; ?>

古いコードは通りの名前の後にコンマを続けて出力し、新しいコードは通りの名前が 0 文字より長いかどうかをチェックし、そうである場合にのみ出力します。

于 2012-04-12T19:14:36.557 に答える
1

後で出力を修正できます。

ob_start();
?>
<h4><?=$prop['house_number']?>, <?=$prop['street']?>, <?=$prop['town']?></h4>
<?php
echo strtr(ob_end_clean(), ', , ', ', ');

しかし、実際にはそれを解決する方法は100あり、これは1つだけです。

echo '<h4>' , implode(', ', array_filter(
        array($prop['house_number'], $prop['street'], $prop['town']), 'strlen')
      ),  '</h4>';
于 2012-04-12T19:16:07.113 に答える
1

三項演算子を使用して、各変数が空かどうかを確認できます。http://davidwalsh.name/php-shorthand-if-else-ternary-operatorsをご覧ください

その場合、コードは次のようになります。

<h4>
<?=!empty($prop['house_number']) ? $prop['house_number'].', ' : ''?>
<?=!empty($prop['street']) ? $prop['street'].', ' : ''?>
<?=!empty($prop['town']) ? $prop['town'].', ' : ''?>
</h4>
于 2012-04-12T19:16:45.230 に答える
1

関数の配列に慣れて内破することをお勧めします。$prop 配列が次のようになっていると仮定します。

$prop = array(
    "house_number" => 55,
    "street" => "",
    "town" => "Houston"
);

配列をフィルタリングして implode を使用できます。

function filter_empty( $a ) {
    if( strlen(trim($a)) > 0 ) return( true );
    return( false );
}

$filtered = array_filter( $prop, 'filter_empty' );

そこから、配列は次のようになります。

print_r( $filtered );
/*
Array
(
    [house_number] => 55
    [town] => Houston
)
*/

人間が読めるテキスト行は簡単です。echo implode( ", ", $filtered );

次のようなものを出力55, Houstonします-すべての空をバイパスします。

于 2012-04-12T19:19:52.567 に答える