Мне часто приходится перечислять элементы, разделенные запятой, пробелом или пунктуацией, адреса являются классическим примером (это излишний для адреса и является примером!):Добавление условного форматирования и пунктуации к набору переменных
echo "L$level, $unit/$num $street, $suburb, $state $postcode, $country.";
//ouput: L2, 1/123 Cool St, Funky Town, ABC 2000, Australia.
Как просто, как это звучит, есть простой способ «условно» добавить пользовательские разделители между переменными, только если переменная существует? Нужно ли проверять, установлена ли каждая переменная? Таким образом, используя выше, другой адрес с меньшим количеством деталей может выводить что-то вроде:
//L,/Cool St, , ABC , .
немного трудный способ проверки будет видеть, если каждая переменная установлена и отображать знаки препинания.
if($level){ echo "L$level, "; }
if($unit){ echo "$unit"; }
if($unit && $street){ echo "/"; }
if($street){ echo "$street, "; }
if($suburb){ echo "$suburb, "; }
//etc...
Было бы хорошо иметь функцию, которая может автоматически сделать все обнажать/форматирования и т.д.:
somefunction("$unit/$num $street, $suburb, $state $postcode, $country.");
Другим примером является простой список в формате CSV. Я хочу выходные элементы х, разделенных запятая:
for($i=0; $i=<5; $i++;){ echo "$i,"; }
//output: 1,2,3,4,5,
В цикле, например, что это лучший способ определения последнего элемента массива или условие цикла выполняются не запятая в конце список? Один длинный путь вокруг этого я прочитал о, чтобы поставить запятую перед тем элемента, за исключением первого входа что-то вроде:
$firstItem = true; //first item shouldn't have comma
for($i=0; $i=<5; $i++;){
if(!$firstItem){ echo ","; }
echo "$i";
$firstItem = false;
}
Не решите проблему, если вы не проверите на isset или empty перед добавлением каждого элемента. – Tobias
как я (см. Ниже, № 3). unfortunatley, что делает его намного менее изящным. – stefs