PHP has 'dynamic' or 'type not known until runtime' variables. i.e. the interpreter and/or the programmer cannot know until run time what type of information is in a variable. Now, let us assume that you have two variables and both contain character strings that can also be interpreted as numbers.
i.e. $foo = "2014" and $bar = "0301";
Now assume that the + plus sign has to work out what you want to do?
Do you want these to be treated as numbers and added together? giving 2315.
Or do you the 'sortable' date field of "20140301' i.e. yyyymmdd?
There is no way for the '+' operator to know and do the correct thing in all circumstances.
Hence we need the 'concatenation' operator '.'.
The '+' operator always converts to numbers and adds.
The '.' operator always converts to string and concatenates.
We need both.
In a language with 'typed' variables you can always work out from the context i.e. the types of the variables, what the programmer intended.