ID: 25533
Updated by: [EMAIL PROTECTED]
Reported By: spagmoid at yahoo dot com
Status: Bogus
Bug Type: Feature/Change Request
-Operating System: WinXP
+Operating System: *
-PHP Version: 4.3.3
+PHP Version: *
New Comment:
It is a thing that is in our view a) illogical and b) we don't care
about. Not to your question. If we were to produce an error message we
could instead implement any behaviour with the same amount of work -
but to repeat - we don't care about. Thus it is undefined. And since it
is undefined we will not provide examples for what it does because that
would make it a documented feature we would have to take care about -
and just to repeat - we don't care about.
Previous Comments:
------------------------------------------------------------------------
[2003-09-16 14:10:20] brad at info-link dot net
In PHP:
"10 Small Pigs" | "10.2 Little Piggies" = "10.smmm|t|mgsiggies"
Seems to follow the Perl way of doing things... Each char in the first
string is bitwise or'd with the corresponding char in the second
string.
I didn't test bitwise-&, ^, etc, but I would expect them to act
similarly.
Why not just add examples to the manual instead of saying it's
undefined? Why allow an operation that you can't depend on - just
throw a compiler error.
------------------------------------------------------------------------
[2003-09-16 13:47:37] [EMAIL PROTECTED]
And what, in your opinion, should be the result of
"10 Small Pigs" | "10.2 Little Piggies" ?
The point is that logical (bitwise) operations are inherently not
loosely typed. That's why the logical operators are (and will remain)
undefined on strings.
Use a cast at your own risk.
------------------------------------------------------------------------
[2003-09-16 13:39:18] spagmoid at yahoo dot com
Let's see a few other things straight from the manual since you're all
such EXPERTS on it:
$foo = "0"; // $foo is string (ASCII 48)
$foo += 2; // $foo is now an integer (2)
$foo = 1 + "10.5"; // $foo is float (11.5)
$foo = 1 + "-1.3e3"; // $foo is float (-1299)
$foo = 1 + "bob-1.3e3"; // $foo is integer (1)
$foo = 1 + "bob3"; // $foo is integer (1)
$foo = 1 + "10 Small Pigs"; // $foo is integer (11)
$foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2)
$foo = "10.0 pigs " + 1; // $foo is float (11)
$foo = "10.0 pigs " + 1.0; // $foo is float (11)
Does that look "UNDEFINED" to you??? Huh? Take that feature out and
watch how many current PHP apps fail. You people have no sense of
QUALITY whatsoever. NO PRIDE IN YOUR WORK. NO PRIDE IN PHP.
------------------------------------------------------------------------
[2003-09-16 13:33:11] spagmoid at yahoo dot com
"The result of using other operators on strings is undefined."
RTFM?? That line isn't in the manual you moron! You just made it up!
Add it to the manual then, instead of improving your product. What a
bunch of jackasses.
THIS is in the manual:
String conversion to numbers
When a string is evaluated as a numeric value, the resulting value and
type are determined as follows.
------------------------------------------------------------------------
[2003-09-16 13:25:49] [EMAIL PROTECTED]
Here's your statement:
"PHP has two string operators ('.' and '.=', RTFM). The result of using
other operators on strings is undefined."
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/25533
--
Edit this bug report at http://bugs.php.net/?id=25533&edit=1