Page 1 of 1

why result is seven ?

Posted: Sun Jun 20, 2010 10:18 pm
by pincs
code here:

Code: Select all

<?php

$i=1;
echo "i=".(++$i)+(++$i)+(++$i); //result 7
//but echo (++$i)+(++$i)+(++$i); result is 9
?>

Re: why result is seven ?

Posted: Mon Jun 21, 2010 12:49 am
by McInfo

Code: Select all

$i = 1; var_dump(++$i); // 2

$i = 1; var_dump((++$i) + (++$i)); // 2 + 3 = 5

$i = 1; var_dump((++$i) + (++$i) + (++$i)); // 2 + 3 + 4 = 9

// Concatenation makes the integer part of the string
$i = 1; var_dump("i=" . 2); // "i=2"

// When cast as an integer, the string becomes 0
$i = 1; var_dump((int) "i=2"); // 0

// During addition, the string is implicitly cast as an integer
$i = 1; var_dump("i=2" + 3); // 0 + 3 = 3

$i = 1; var_dump("i=2" + 3 + 4); // 0 + 3 + 4 = 7

$i = 1; var_dump("i=" . 2 + 3 + 4); // 0 + 3 + 4 = 7

$i = 1; var_dump("i=" . (++$i) + (++$i) + (++$i)); // 0 + 3 + 4 = 7

$i = 1; var_dump("i=" . ((++$i) + (++$i) + (++$i))); // "i=9"