I have a variable that is built in loop. Something like:
$str = ""; for($i = 0; $i < 10; $i++) $str .= "something";
If $str = “” is ommitted, I get undefined variable notice, but I thought php auto-declare a variable the first time it sees undeclared one?
How do I do this right?
You get the undefined variable because you’re concatenating the value of itself with another value.
The equivalent of
$str = $str . "something";
So, it can’t say what’s the initial value is. It’s the equivalent of this:
$str = [undefined value] . "something";
What’s the result of a concatenation of
[undefined value] and
"something"? The interpreter can’t say…
So, you have to put
"" in the variable first to initiate the variable’s value, as you did.
If you really need to make it a it cleaner you could do:
for($i = 0, $str = ''; $i < 10; $i++) $str .= "something";
But what you have is what I normally do. vlceBerg explains it well.
It’s safer to not use the auto-declare feature – that’s why it issues a notice. A notice is the lowest level of warning, and won’t be displayed by default. Most older PHP apps will issue lots of notices if you were to turn them on.
PHP variables that are auto-declared are registered as being undefined which is why you’re receiving the notice.
It is generally better to declare PHP variables prior to using them though many of the lazy among us, myself included don’t always do that.