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>