Мне часто приходится перечислять элементы, разделенные запятыми, пробелами или пунктуацией, классическим примером являются адреса (для адреса это излишне, а для примера!)
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. Я хочу вывести x элементов, разделенных запятой:
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;
}