Привет В настоящее время я использую сторонний API, который получает адресные данные на основе почтового индекса и поиска адресов, он возвращает массив через xml, который работает нормально. Из доступных 30+ полей, которые возвращаются, есть 8, которые я хотел бы вставить в поле типа поля memo.
$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", вы можете использовать тройные операторы:
(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/>" : "");
Вы можете проверить с условием:
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;
}
Можно ли сделать $ item ['line'] массив и цикл через этот массив?
$ Пункт [ "Line"] [0]
$ Пункт [ "Line"] [1]
...
foreach ($item['line'] as $line) {
if (!empty($line)) {$line . "<br/>";}
}
Вы можете поместить ключи в массив, например:
$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;
Что-то вроде этого (непроверено):
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/>';
}
}
Я бы пошел с этим:
array_walk($item, function($val) {
if (!is_null($val)) echo $val. "<br/>";
});