Arithmetic operation within string concatenation without parenthesis causes strange result

后端 未结 3 602
星月不相逢
星月不相逢 2021-01-13 17:34

Consider the following line of code:


The output of that is 3, which is the expec

相关标签:
3条回答
  • 2021-01-13 17:40

    Your string '10 - 7 = ' is being concatenated with $x. Then that is being interpreted as an int which results in 10 and then 7 is subtracted, resulting in 3.

    For more explanation, try this:

    echo (int) ('10 - 7 = ' . 10); // Prints "10"
    

    More information on string to number conversion can be found at http://www.php.net/manual/en/language.types.string.php#language.types.string.conversion

    If the string starts with valid numeric data, this will be the value used

    0 讨论(0)
  • 2021-01-13 17:49

    In this code:

    echo '10 - 7 = '.$x-$y;
    

    The concatenation takes precedence, so what you're left with is this:

    echo '10 - 7 = 10'-$y;
    

    Because this is trying to perform integer subtraction with a string, the string is converted to an integer first, so you're left with something like this:

    echo (int)'10 - 7 = 10'-$y;
    

    The integer value of that string is 10, so the resulting arithmetic looks like this:

    echo 10-$y;
    

    Because $y is 7, and 10 - 7 = 3, the result being echoed is 3.

    0 讨论(0)
  • 2021-01-13 18:00

    . and - have the same precedence, so PHP is reinterpreting '10 - 7 = 10' as a number, giving 10, and subtracting 7 gives 3.

    0 讨论(0)
提交回复
热议问题