Знак "плюс" не так "широко принят" для объединения строк, как вы могли себе представить. Существует множество языков, в которых он не используется, включая Perl и C, и, поскольку именно в них лежат корни PHP, PHP имеет смысл последовать их примеру. Во многих языках для этого даже нет оператора; вам придется использовать функцию concat()
.
PHP имеет слабую типизацию и будет выполнять неявное преобразование типов, когда увидит знак плюс или точку. Это означает, что если вы сделаете $x = "45 inches" + "20 inches";
, PHP установит $x
в 65
. Если вы используете оператор конкатенации точек, результат явно будет сильно отличаться. То же самое относится, если у вас есть $y = 5 . 10;
. Это даст вам 510
, но измените его на знак плюс, и вы получите совершенно другой результат.
Кроме того, рассуждая логически, противоположность плюса – это минус. Но это не так легко сопоставляется с конкатенацией. (Я видел один язык, который пытался это сделать, но на самом деле это не имело особого смысла)
Ваше предпочтение знаку «плюс» в качестве конкатенатора обусловлено исключительно сопротивлением изменениям при изучении нового языка (довольно распространенное явление — я знаю нескольких человек, которые изначально ненавидели Python из-за отсутствия фигурных скобок!)
Как человек, который долгое время программировал на многих языках, я могу сказать вам, что предпочитаю однозначный оператор конкатенации. Использование одного и того же оператора для сложения и конкатенации в свободно типизированном языке вызывает проблемы; на самом деле, я бы сказал, что это один из самых больших недостатков Javascript (и это исходит от кого-то, кто в целом является поклонником Javascript).
Python строго типизирован, что означает, что ему может сойти с рук использование знака плюс в качестве оператора сложения и конкатенации, потому что это заставляет вас работать с одним и тем же типом; вы не можете добавить целое число к строке в Python; если вам нужно, вы должны явно указать свои типы, чтобы не было двусмысленности, по крайней мере, не для компилятора.
Однако для читателя все еще существует двусмысленность - при чтении может быть не сразу очевидно, что имелось в виду под любым данным плюсом в коде. В Python это сделать проще, но лично я все же предпочел бы иметь однозначный оператор. Но это всего лишь личное предпочтение; если я работаю с Python, Javascript или Visual Basic, то я должен работать по их правилам.
person
Spudley
schedule
24.11.2010
+
для конкатенации строк в PHP, оператор.
только сбивает с толку, и это одна из немногих вещей, которые я больше всего ненавижу в PHP. - person Marco Demaio   schedule 02.12.2012