1--TEST-- 2Execution order of variables 3--FILE-- 4<?php 5 6/* strings and concat */ 7 8class strclass { 9 var $str = "bad"; 10 static $statstr = "bad"; 11} 12 13$a = "bad"; 14$b = "good"; 15echo "1)"; 16$c = $a.($a=$b); 17echo $c; 18echo "\r\n"; 19 20$a = "bad"; 21$b = "good"; 22$c = ($a=$b).$a; 23echo "2)"; 24echo $c; 25echo "\r\n"; 26 27 28$str = new strclass(); 29$c = $str->str.($str->str="good"); 30echo "3)"; 31echo $c; 32echo "\r\n"; 33 34$str->str = "bad"; 35 36$c = ($str->str="good").$str->str; 37echo "4)"; 38echo $c; 39echo "\r\n"; 40 41$c = strclass::$statstr.(strclass::$statstr="good"); 42echo "5)"; 43echo $c; 44echo "\r\n"; 45 46strclass::$statstr = "bad"; 47 48$c = (strclass::$statstr="good").strclass::$statstr; 49echo "6)"; 50echo $c; 51echo "\r\n"; 52 53 54function foo() { 55 global $a; 56 $a = "good"; 57 return $a; 58} 59 60 61$a = "bad"; 62echo "7)"; 63echo foo() . $a; 64echo "\r\n"; 65 66$a = "bad"; 67echo "8)"; 68echo $a . foo(); 69echo "\r\n"; 70 71/* other operators */ 72 73$x = 1; 74$z = $x - ($x++); 75echo "9)"; 76echo $z; 77echo "\r\n"; 78 79$x = 1; 80$z = ($x++) - $x; 81echo "10)"; 82echo $z; 83echo "\r\n"; 84 85$x = 1; 86$z = $x - (++$x); 87echo "11)"; 88echo $z; 89echo "\r\n"; 90 91$x = 1; 92$z = (++$x) - $x; 93echo "12)"; 94echo $z; 95echo "\r\n"; 96 97 98$x = 1; 99$y = 3; 100$z = $x - ($x=$y); 101echo "13)"; 102echo $z; 103echo "\r\n"; 104 105$x = 1; 106$y = 3; 107$z = ($x=$y) - $x; 108echo "14)"; 109echo $z; 110echo "\r\n"; 111 112 113$a = 100; 114$b = 200; 115echo "15)"; 116echo $a + ($a=$b); 117echo "\r\n"; 118 119$a = 100; 120$b = 200; 121echo "16)"; 122echo ($a=$b) + $a; 123echo "\r\n"; 124 125 126$a = array(100,200); 127$i = 0; 128 129echo "17)"; 130echo $a[$i++] + $a[$i++]; 131echo "\r\n"; 132 133$i = -1; 134echo "18)"; 135echo $a[++$i] + $a[++$i]; 136echo "\r\n"; 137 138$i = 0; 139echo "19)"; 140echo $a[$i] + ($a[$i]=400); 141echo "\r\n"; 142 143 144$a[0] = 100; 145echo "20)"; 146echo ($a[$i]=400) + $a[$i]; 147echo "\r\n"; 148 149 150class c { 151 var $val = 10; 152 static $stat = 20; 153} 154 155echo "21)"; 156echo c::$stat + (c::$stat=200); 157echo "\r\n"; 158 159echo "22)"; 160echo (c::$stat=300) + c::$stat; 161echo "\r\n"; 162 163$c = new c(); 164 165echo "23)"; 166echo $c->val + ($c->val=200); 167echo "\r\n"; 168 169echo "24)"; 170echo ($c->val=300) + $c->val; 171echo "\r\n"; 172 173?> 174--EXPECT-- 1751)goodgood 1762)goodgood 1773)badgood 1784)goodgood 1795)badgood 1806)goodgood 1817)goodgood 1828)goodgood 1839)1 18410)-1 18511)0 18612)0 18713)0 18814)0 18915)400 19016)400 19117)300 19218)300 19319)500 19420)800 19521)220 19622)600 19723)210 19824)600 199