Конкатенация строк PHP

Можно ли объединить строки следующим образом? А если нет, то какова альтернатива этому?

while ($personCount < 10) {
    $result += $personCount . "person ";
}

echo $result;

Оно должно выглядеть как 1 person 2 person 3 человек и т. д.

Вы не можете использовать знак + в конкатенации, так что же есть альтернатива?


person Illep    schedule 11.07.2012    source источник
comment
Фактически вы используете альтернативу в своем примере кода.   -  person lanzz    schedule 12.07.2012
comment
Мне трудно поверить, что никто не указал, что вы используете людей вместо человека.   -  person Mark Gardner    schedule 04.07.2017
comment
Более важный вопрос: ПОЧЕМУ php использует файлы . вместо + для конкатенации строк? Я имею в виду.. Серьезно?   -  person www-0av-Com    schedule 04.03.2018


Ответы (5)


Просто используйте . для объединения. И вы пропустили приращение $personCount!

while ($personCount < 10) {
    $result .= $personCount . ' people';
    $personCount++;
}

echo $result;
person abhshkdz    schedule 11.07.2012

На шаг (ИМХО) лучше

$result .= $personCount . ' people';
person Loren Wolsiffer    schedule 11.07.2012

Это должно быть быстрее.

while ($personCount < 10) {
    $result .= "{$personCount} people ";
    $personCount++;
}

echo $result;
person TurKux    schedule 18.03.2015
comment
Хотите привести какие-либо доказательства того, что "{$personCount} people" быстрее, чем $personCount . ' people'? В противном случае это выглядит просто дикими домыслами... - person Jake; 10.12.2017
comment
PHP вынужден повторно конкатенировать с каждым '.' оператор. Для объединения лучше использовать двойные кавычки. - person Abdul Alim Shakir; 05.04.2018
comment
@Abdul Alim Shakir: Но есть только одна конкатенация, так что это не должно иметь никакого значения (?). - person Peter Mortensen; 16.05.2021
comment
Использование . вместо .= (первый экземпляр) влияет на производительность (вероятно, из-за алгоритм Шлемиэля-художника - это может произойти в любом языке или системе), но уже использует .= . - person Peter Mortensen; 16.05.2021
comment
продолжение: из операторов назначения: Использование $text .= "additional text"; вместо $text = $text . "additional text"; может значительно повысить производительность благодаря эффективности распределения памяти. Я сократил время выполнения с 5 секунд до 0,5 секунд (10 раз), просто переключившись на первый шаблон для цикла с 900 итерациями над строкой $text, которая к концу достигает 800 КБ. - person Peter Mortensen; 16.05.2021

Я думаю, что этот код должен работать нормально:

while ($personCount < 10) {
    $result = $personCount . "people ';
    $personCount++;
}
# I do not understand why you need the (+) with the result.
echo $result;
person salim    schedule 11.07.2012
comment
Смотрите, чтобы у вас было "people ' вместо 'people '. - person PhoneixS; 21.01.2014
comment
Вы, вероятно, получите множество ошибок из-за того, что указал @PhoneixS: несоответствующие кавычки. - person Mark Gardner; 04.07.2017

person    schedule
comment
Хотя этот код может дать ответ на вопрос, предоставление дополнительного контекста относительно того, как и/или почему он решает проблему, улучшит долгосрочную ценность ответа. - person Nic3500; 09.08.2018
comment
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. – Из обзора - person 7ochem; 17.05.2021