1

これが機能するかどうか、またはどのように機能させるかはわかりません。

どんな助けでもとても感謝しています。

この条件付きステートメント文字列を 1 つの変数にする必要がありますか?

これどうやってするの?

if ($address1) {
    echo $address1 . ', ';
}

if ($address2) {
    echo $address2 . ', ';
}

if ($address3) {
    echo $address3 . ', ';
}

if ($address4) {
    echo $address4 . ', ';
}

if ($townCity) {
    echo $townCity . ', ';
}

if ($county) {
    echo $county . ', ';
}

if ($postCode) {
    echo $postCode;
}

したがって、基本的には 1 つの変数でこれが必要であり、if ステートメントでそれを使用する理由は、これらの変数の一部が存在しない可能性があるためです。

各変数の後には、コンマとスペースがあります。

このままやったら…

$singleVar =    $address1 . ', ' . 
                $address2 . ', ' .
                $address3 . ', ' . 
                $address4 . ', ' . 
                $townCity . ', ' . 
                $county . ', ' . 
                $postCode;

次に、存在しない変数については、余分なコンマとスペースがあります-クールではありません。


誰でもアドバイスできますか。

ありがとう

4

6 に答える 6

7

方法はたくさんありますが、私がよく使う方法は次のとおりです。

$items = array(
    $address1,
    $address2,
    $address3,
    $address4,
    $townCity,
    $county,
    $postCode
);
echo implode(', ', array_filter($items));

array_filter「空の」ものを削除します。PHP ドキュメントのboolean への変換を参照してください。

implode最初の引数として渡す文字列によって配列項目を結合し,、出力の最後に余分なぶら下がりがないことを確認します。

変数が定義されていないことが心配な場合は、代わりに次のようなものを使用してください。

$items = array();
$fields = array(
    'address1',
    'address2',
    'address3',
    'address4',
    'townCity',
    'county',
    'postCode'
);
foreach ($fields as $field)
{
    isset($$field) && $items[] = $$field;
}
echo implode(', ', $items);

isset「空」ではなく、何かが「設定」されているかどうかをチェックすることを覚えておいてください。たとえば、空の文字列またはゼロを含む変数は「設定」されますが、if ($var)条件は失敗します。

于 2012-10-16T21:14:20.597 に答える
1
$address1 = 'foo';
$address3 = 'bar';
$postCode = 'baz';

$vars = array();
foreach (array('address1', 'address2', 'address3', 'address4', 'townCity', 'county', 'postCode') as $var)
{
    isset($$var) and $vars[] = $$var;
}
$single = implode(', ', $vars);

テストhttp://codepad.org/WwzRYvuO

于 2012-10-16T21:33:53.157 に答える
0

変数が実際に存在しない場合は、それissetを確認する必要があります。それらが存在するが空/null/falseの場合は、Wesley Murchによる回答を使用できます.

$singleVar = '';
$variables = array('address1','address2','address3',
                   'address4','townCity','county','postCode');

foreach($variables as $variable)
{
    if (isset($$variable))
      $singleVar .= ($$variable . ', ');
}
于 2012-10-16T21:14:17.247 に答える
0

次のように、variable variablesを使用して実行できます。

$arr = array('address1','address2','address3','address4','townCity','county','postCode');
$singleVar = '';
foreach ($arr as $val) {
   if (isset($$val)) {
      $singleVar .= $$val . ', ';
   }
}
于 2012-10-16T21:17:17.187 に答える
-1
$string='';
if($address1)
  $string.= $address1.',';
if(address2)
  $string.= $address2.',';
//...etc
echo $string;
于 2012-10-16T21:14:46.657 に答える
-1

私は次のことを提案します:

join(array_filter(array($a,$b,$c,$d,$e,$f)), ", ");

などは$a変数です。参照。https://stackoverflow.com/a/2603047/1689451

于 2012-10-16T21:23:49.230 に答える