Annotation of embedaddon/php/tests/lang/engine_assignExecutionOrder_002.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Evaluation order during assignments.
        !             3: --FILE--
        !             4: <?php
        !             5: 
        !             6: // simple case with missing element
        !             7: $f = array("hello","item2","bye");
        !             8: list($a,,$b) = $f;
        !             9: echo "A=$a B=$b\n";
        !            10: 
        !            11: 
        !            12: // Warning: Cannot use a scalar value as an array in %s on line %d
        !            13: $c[$c=1] = 1;
        !            14: 
        !            15: // i++ evaluated first, so $d[0] is 10
        !            16: $d = array(0,10);
        !            17: $i = 0;
        !            18: $d[$i++] = $i*10;
        !            19: // expected array is 10,10
        !            20: var_dump($d);
        !            21: 
        !            22: // the f++++ makes f into 2, so $e 0 and 1 should both be 30
        !            23: $e = array(0,0);
        !            24: $f = 0;
        !            25: $g1 = array(10,10);
        !            26: $g2 = array(20,20);
        !            27: $g3 = array(30,30);
        !            28: $g = array($g1,$g2,$g3);
        !            29: list($e[$f++],$e[$f++]) = $g[$f];
        !            30: // expect 30,30
        !            31: var_dump($e); 
        !            32: 
        !            33: 
        !            34: $i1 = array(1,2);
        !            35: $i2 = array(10,20);
        !            36: $i3 = array(100,200);
        !            37: $i4 = array(array(1000,2000),3000);
        !            38: $i = array($i1,$i2,$i3,$i4);
        !            39: $j = array(0,0,0);
        !            40: $h = 0;
        !            41: // a list of lists 
        !            42: list(list($j[$h++],$j[$h++]),$j[$h++]) = $i[$h];
        !            43: var_dump($j);
        !            44: 
        !            45: 
        !            46: // list of lists with just variable assignments - expect 100,200,300
        !            47: $k3 = array(100,200);
        !            48: $k = array($k3,300);
        !            49: list(list($l,$m),$n) = $k;
        !            50: echo "L=$l M=$m N=$n\n";
        !            51: 
        !            52: 
        !            53: // expect $x and $y to be null - this fails on php.net 5.2.1 (invalid opcode) - fixed in 5.2.3 
        !            54: list($o,$p) = 20;
        !            55: echo "O=$o and P=$p\n";
        !            56: 
        !            57: 
        !            58: // list of lists with blanks and nulls expect 10 20 40 50 60 70 80
        !            59: $q1 = array(10,20,30,40);
        !            60: $q2 = array(50,60);
        !            61: $q3 = array($q1,$q2,null,70);
        !            62: $q4 = array($q3,null,80);
        !            63: 
        !            64: list(list(list($r,$s,,$t),list($u,$v),,$w),,$x) = $q4;
        !            65: echo "$r $s $t $u $v $w $x\n";
        !            66: 
        !            67: 
        !            68: // expect y and z to be undefined 
        !            69: list($y,$z) = array();
        !            70: echo "Y=$y,Z=$z\n";
        !            71: 
        !            72: // expect h to be defined and be 10
        !            73: list($aa,$bb) = array(10);
        !            74: echo "AA=$aa\n";
        !            75: 
        !            76: // expect cc and dd to be 10 and 30
        !            77: list($cc,,$dd) = array(10,20,30,40);
        !            78: echo "CC=$cc DD=$dd\n";
        !            79: 
        !            80: // expect the inner array to be defined 
        !            81: $ee = array("original array");
        !            82: function f() {
        !            83:   global $ee;
        !            84:   $ee = array("array created in f()");
        !            85:   return 1;
        !            86: }
        !            87: $ee["array entry created after f()"][f()] = "hello";
        !            88: print_r($ee);
        !            89: 
        !            90: ?>
        !            91: --EXPECTF--
        !            92: A=hello B=bye
        !            93: 
        !            94: Warning: Cannot use a scalar value as an array in %s on line %d
        !            95: array(2) {
        !            96:   [0]=>
        !            97:   int(10)
        !            98:   [1]=>
        !            99:   int(10)
        !           100: }
        !           101: array(2) {
        !           102:   [0]=>
        !           103:   int(30)
        !           104:   [1]=>
        !           105:   int(30)
        !           106: }
        !           107: array(3) {
        !           108:   [0]=>
        !           109:   int(1000)
        !           110:   [1]=>
        !           111:   int(2000)
        !           112:   [2]=>
        !           113:   int(3000)
        !           114: }
        !           115: L=100 M=200 N=300
        !           116: O= and P=
        !           117: 10 20 40 50 60 70 80
        !           118: 
        !           119: Notice: Undefined offset: 1 in %s on line %d
        !           120: 
        !           121: Notice: Undefined offset: 0 in %s on line %d
        !           122: Y=,Z=
        !           123: 
        !           124: Notice: Undefined offset: 1 in %s on line %d
        !           125: AA=10
        !           126: CC=10 DD=30
        !           127: Array
        !           128: (
        !           129:     [0] => array created in f()
        !           130:     [array entry created after f()] => Array
        !           131:         (
        !           132:             [1] => hello
        !           133:         )
        !           134: 
        !           135: )

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>