php string number concatenation messed up

前端 未结 5 1326
灰色年华
灰色年华 2020-12-07 01:13

I got some php code here:

 

which outputs 234,

but when I add a number 11 before \"

相关标签:
5条回答
  • 2020-12-07 01:50

    You should check PHP type conversion table to get better idea what's happen behind the scenes: http://php.net/manual/en/types.comparisons.php

    0 讨论(0)
  • 2020-12-07 01:51

    The dot operator has the same precedence as + and -, which can yield unexpected results.

    That technically answers your question... if you want numbers to be treated as numbers during concatination just wrap them in parenthesis.

    <?php
    echo '11hello ' . (1 + 2) . '34';
    ?>
    
    0 讨论(0)
  • 2020-12-07 01:57

    you have to use () in mathematical operation

    echo 'hello ' . (1 + 2) . '34'; // output hello334
    echo '11hello ' . (1 + 2) . '34'; // output 11hello334
    
    0 讨论(0)
  • 2020-12-07 01:58

    That's strange...

    But

    <?php
    echo '11hello ' . (1 + 2) . '34';
    ?>
    

    OR

    <?php
    echo '11hello ', 1 + 2, '34';
    ?>
    

    fixing issue.


    UPDv1:

    Finally managed to get proper answer:

    'hello' = 0 (contains no leading digits, so PHP assumes it is zero).

    So 'hello' . 1 + 2 simplifies to 'hello1' + 2 is 2, because no leading digits in 'hello1' is zero too.


    '11hello ' = 11 (contains leading digits, so PHP assumes it is eleven).

    So '11hello ' . 1 + 2 simplifies to '11hello 1' + 2 as 11 + 2 is 13.


    UPDv2:

    http://www.php.net/manual/en/language.types.string.php

    The value is given by the initial portion of the string. If the string starts with valid numeric data, this will be the value used. Otherwise, the value will be 0 (zero). Valid numeric data is an optional sign, followed by one or more digits (optionally containing a decimal point), followed by an optional exponent. The exponent is an 'e' or 'E' followed by one or more digits.

    0 讨论(0)
  • 2020-12-07 02:00

    If you hate putting operators in between assign them to vaiable

    $var = 1 + 2;
    
    echo 'hello ' . $var . '34';
    
    0 讨论(0)
提交回复
热议问题