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

Една стъпка (IMHO) по-добре

$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, който достига 800K до края. - 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