将地址字段组合到一个字段

时间:2014-11-20 08:58:56

标签: php

您好我正在使用第三方API,它根据邮政编码和地址查询获取地址数据,它会返回xml上的数组,这很正常。在返回的30多个可用字段中,有8个我想插入备忘录框类型字段,有

$item["Line1"] . "<br/>";
$item["Line2"] . "<br/>";
$item["Line3"] . "<br/>";
$item["Line4"] . "<br/>";
$item["Line5"] . "<br/>";
$item["PostTown"] . "<br/>";
$item["County"] . "<br/>";
$item["Postcode"] . "<br/>";

我的问题是,如何将这些放入字段并删除空行以使地址连续运行?

例如,使用上面的代码,如果第3行,第4行和第5行为空,结果将是

第1行 邮政镇 县
邮编

我能想到的唯一方法就是写一篇很长的if语句,除非有人能告诉我一个更聪明的方法,否则我不必这样做。

6 个答案:

答案 0 :(得分:0)

像这样(未经测试):

for($i = 1; $i <= 5; $i++) {
    if(!is_null($item['Line'.$i]) && strlen($item['Line'.$i])) {
        // do something with it
        echo $item['Line'.$i] . '<br/>';
    }
}

如果您想要$item中的每个字段:

foreach($item as $value) {
    if(!is_null($value) && strlen($value)) {
        // do something with it
        echo $value . '<br/>';
    }
}

答案 1 :(得分:0)

您可以将键放入如下数组:

$arrayKeys = array("Line1","Line2","Line3","Line4","Line5","PostTown","County","Postcode");

然后你可以循环它将输出添加到另一个变量并回显它:

$output = "";

foreach($arraysKeys as $key){
    if(array_key_exists($key, $item){
        $output .= $item[$key] . "<br/>";
    }
}

echo $output;

答案 2 :(得分:0)

如果您不想使用“if”语句,可以使用ternary operators

(strlen(trim($item["Line1"])) > 0 ? $item["Line1"] . "<br/>" : "");
(strlen(trim($item["Line2"])) > 0 ? $item["Line2"] . "<br/>" : "");
(strlen(trim($item["Line3"])) > 0 ? $item["Line3"] . "<br/>" : "");
(strlen(trim($item["Line4"])) > 0 ? $item["Line4"] . "<br/>" : "");
(strlen(trim($item["Line5"])) > 0 ? $item["Line5"] . "<br/>" : "");
(strlen(trim($item["PostTown"])) > 0 ? $item["PostTown"] . "<br/>" : "");
(strlen(trim($item["County"])) > 0 ? $item["County"] . "<br/>" : "");
(strlen(trim($item["Postcode"])) > 0 ? $item["Postcode"] . "<br/>" : "");

答案 3 :(得分:0)

是否可以让$ item [&#39; line&#39;]成为一个数组并循环通过这个数组?

$项[&#34;线&#34;] [0]

$项[&#34;线&#34;] [1]

...

foreach ($item['line'] as $line) {

if (!empty($line)) {$line . "<br/>";}

}

答案 4 :(得分:0)

我会这样做:

array_walk($item, function($val) {
   if (!is_null($val)) echo $val. "<br/>";
});

答案 5 :(得分:0)

您可以按如下方式查看条件:

if(trim($item["Line1"])):echo $item["Line1"] . "<br/>";endif;
if(trim($item["Line2"])):echo $item["Line2"] . "<br/>";endif;

另一种方式:

foreach($item as $cur){
  if(trim($cur)): echo "$cur <br>"; endif;
}