ID:               19883
 Comment by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
 Status:           Bogus
 Bug Type:         Strings related
 Operating System: Windows NT
 PHP Version:      4.2.0
 New Comment:

Yes, of course,
I was only thinking that the advantage of PHP over C
was that we can concatenate easily strings with
expressions and functions results when setting variable,
calling functions ...

this syntax allow to do :

something('a='.$a.' and f(a)*2 = '.f($a)*2.' ...');

instead of :
$str = 'a=';
$str .= $a;
$str .= ' and f(a)*2 = ';
$str .= f($a)*2;
$str .= ' ...';
something($str);

or :
$str = sprintf('a=%d and f(a)*2 = %d ...', $a, f($a)*2);
something($str);

I really think that if you allow this kind of concatenation
to avoid complex string composition, then the 'float'
problem is a bug, standard C does not allow dynamic
string concatenation but in C++ you can overload the '+'
operator and there is no confusion with the '.'

I know there is always a way to overcome the problem
in syntax, my report is only about something that
appear to me to be an error.

Julien.


Previous Comments:
------------------------------------------------------------------------

[2002-10-13 11:38:29] [EMAIL PROTECTED]

In that case, simply use

$i = 153;
echo $i*2
echo 'km';

or printf()...

------------------------------------------------------------------------

[2002-10-13 11:16:05] [EMAIL PROTECTED]

and when you want to concatenate with dynamic
calculated infos ?

$i = 153;
echo $i*2.'km';

------------------------------------------------------------------------

[2002-10-13 09:47:57] [EMAIL PROTECTED]

Why don't you just use '2km' instead of 2.'km' ?

Derick

------------------------------------------------------------------------

[2002-10-13 09:46:06] [EMAIL PROTECTED]

and also :

$e = 0x7C.'km'; // is ok '124km'
$e = 124.'km'; // parse error

why do you process decimal integers in different way
than hexadecimal integers ? If it is only to detect
decimal float then you should take care to the fact that
'.' is not only a decimal separator but also a concatenation
operator !!!

------------------------------------------------------------------------

[2002-10-13 09:41:43] [EMAIL PROTECTED]

maybe you do not consider it as a bug but it is quite
annoying when contatenating arguments, I personnaly
think that this is a lack of the parser/compiler to
do not detect that the '.' is not a part of the '2'
but it is an operator :

putting a '.' after the 2 doesn't change it's display.
$e = 2.3.'km'; // the dot after 2 followed by a digit
               // indicate a float
'2.3km'

$e = 2..'km'; // is ok the the dot after 2 is useless
'2km'

$e = 2.'km'; // produce a parse error
$e = 2 .'km'; // is ok
'2km'

------------------------------------------------------------------------

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/19883

-- 
Edit this bug report at http://bugs.php.net/?id=19883&edit=1

Reply via email to