Regardless of PHP... the "+" (plus) is a reserved character in the query part of the URL. And is used to encode a space in the querystring. PHP passes all GET values through urldecode() so the "+" gets converted (back) to a space.
In order to use a literal "+" in the querystring it needs to be encoded as "%2B". And PHP will decode this for you when read from the $_GET array.
does PHP treat "+" as a blank space when using GET
It may be more useful to look at it the other way around. A blank space in a query string is shown as + (alias %2B), which your php reads as the intended blank space. Conversely, a blank space in the body of the URL (bad! bad! bad! ;)) will change in transit into %20.