Adding to John Crenshaw's list of reasons not to implicitly
treat strings as arrays in foreach loops...  Please keep in
mind the following valid code:

$s = 'hello';
foreach ((array)$s as $x) {
    var_dump($x);
}

The result is:
string(5) "hello"

That behavior can be handy.  Hopefully, a BC break wouldn't 
occur if any of the string features currently being discussed
are implemented.  Without a BC break, having strings implicitly
be treated as arrays in foreach loops will seem very strange
in cases like the above.

Iterators are nice.  Having a "text_string_to_array" function
would also be fine.  For example:

$s = 'hello';
foreach (text_string_to_array($s) as $x) {
    var_dump($x);
}

The result would be:
string(1) "h"
string(1) "e"
string(1) "l"
string(1) "l"
string(1) "o"

I don't know enough about the internals to say for sure, but
perhaps text_string_to_array() could be implemented as creating
a reference to the string that has a flag set that causes
it to be allowed to be treated as an array.  (A full conversion
might be needed it were written to.  For example,
$a = text_string_to_array($s); $a[0] = 5; )

- Todd


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to