Annotation of embedaddon/php/tests/lang/engine_assignExecutionOrder_002.phpt, revision 1.1.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>