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

所以基本上我需要在一个变量中使用它,而我在 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 文档中的转换为布尔值。

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

您可以使用变量 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 回答