#php
#php
Вопрос:
Я пытаюсь создать пользовательскую функцию для получения массива и добавления запятой. Например, для местоположения или списка элементов.
function arraylist($params)
{
$paramlist = reset($params);
while($item = next($params))
{
$paramlist = $item . ', ' . $paramlist;
}
return $paramlist;
}
$location = array('San Francisco','California','United States');
echo arraylist($location);
San Francisco , California, United States
это вывод. Он должен вывести San Francisco, California, United States
Комментарии:
1. я рекомендую прочитать документацию по php по адресу php.net — не всегда полезно изобретать велосипед ;-). «implode» — это то, что вы ищете.
Ответ №1:
Это дубликат функции, implode
уже присутствующей в PHP, есть ли причина, по которой вы делаете это вручную?
echo implode(', ', array('San Francisco','California','United States'));
Приведенное выше действие аналогично вашей arraylist
-функции.
Небольшое обновление: я заметил, что вы добавляете свой ‘next item’ в начало вашей строки ( $item . ', ' . $paramlist
), что приведет к обратному порядку вашего массива. Вывод будет ( United States, California, San Francisco
). Если это сделано специально, пожалуйста, используйте array_reverse
для достижения того же порядка (вместе с implode
).
Комментарии:
1. Я
San Francisco , California, United States
выводился с использованиемimplode(', ',array_reverse($location));
пробела после названия города…2. Ваш ввод и вывод не совпадают, потому что, если вы сделаете это,
echo implode(', ', array_reverse(array('San Francisco','California','United States')));
ваш вывод должен быть такимUnited States, California, San Francisco
, у вас все наоборот. Пожалуйста, точно скопируйте и вставьте $location.3. Варианты. Мой массив создается php / mysql, но вот print_r
Array ( [0] => United States [1] => California [2] => San Francisco )
4. Тогда, скорее всего, ваша проблема возникает в базе данных MySQL, не могли бы вы, пожалуйста, выполнить этот код:
echo var_dump($location[0]);
. Он должен сообщитьstring(13) "San Francisco"
, но я предполагаю, что он сообщитstring(14) "San Francisco "
.5. Ох. Я нашел проблему. В базе данных place по какой-то причине после названий городов стоит пробел…
Ответ №2:
Вместо этого вы можете просто использовать implode(", ", $location)
.
Ответ №3:
Для этого уже существует функция, называемая implode.
echo implode(',',$array);
это превратит массив в строку с a между ними, вы можете изменить ‘,’ на любую вещь, которую вы хотите :)/
надеюсь, это поможет