при выводе массива добавляется дополнительное пространство

#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 между ними, вы можете изменить ‘,’ на любую вещь, которую вы хотите :)/

надеюсь, это поможет