123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- --TEST--
- Evaluation order during assignments.
- --FILE--
- <?php
- // simple case with missing element
- $f = array("hello","item2","bye");
- list($a,,$b) = $f;
- echo "A=$a B=$b\n";
- // Warning: Cannot use a scalar value as an array in %s on line %d
- try {
- $c[$c=1] = 1;
- } catch (Error $e) {
- echo $e->getMessage(), "\n";
- }
- // i++ evaluated first, so $d[0] is 10
- $d = array(0,10);
- $i = 0;
- $d[$i++] = $i*10;
- // expected array is 10,10
- var_dump($d);
- // the f++++ makes f into 2, so $e 0 and 1 should both be 30
- $e = array(0,0);
- $f = 0;
- $g1 = array(10,10);
- $g2 = array(20,20);
- $g3 = array(30,30);
- $g = array($g1,$g2,$g3);
- list($e[$f++],$e[$f++]) = $g[2];
- // expect 30,30
- var_dump($e);
- $i1 = array(1,2);
- $i2 = array(10,20);
- $i3 = array(100,200);
- $i4 = array(array(1000,2000),3000);
- $i = array($i1,$i2,$i3,$i4);
- $j = array(0,0,0);
- $h = 0;
- // a list of lists
- list(list($j[$h++],$j[$h++]),$j[$h++]) = $i[3];
- var_dump($j);
- // list of lists with just variable assignments - expect 100,200,300
- $k3 = array(100,200);
- $k = array($k3,300);
- list(list($l,$m),$n) = $k;
- echo "L=$l M=$m N=$n\n";
- // expect $x and $y to be null - this fails on php.net 5.2.1 (invalid opcode) - fixed in 5.2.3
- list($o,$p) = 20;
- echo "O=$o and P=$p\n";
- // list of lists with blanks and nulls expect 10 20 40 50 60 70 80
- $q1 = array(10,20,30,40);
- $q2 = array(50,60);
- $q3 = array($q1,$q2,null,70);
- $q4 = array($q3,null,80);
- list(list(list($r,$s,,$t),list($u,$v),,$w),,$x) = $q4;
- echo "$r $s $t $u $v $w $x\n";
- // expect y and z to be undefined
- list($y,$z) = array();
- echo "Y=$y,Z=$z\n";
- // expect h to be defined and be 10
- list($aa,$bb) = array(10);
- echo "AA=$aa\n";
- // expect cc and dd to be 10 and 30
- list($cc,,$dd) = array(10,20,30,40);
- echo "CC=$cc DD=$dd\n";
- // expect the inner array to be defined
- $ee = array("original array");
- function f() {
- global $ee;
- $ee = array("array created in f()");
- return 1;
- }
- $ee["array entry created after f()"][f()] = "hello";
- print_r($ee);
- ?>
- --EXPECTF--
- A=hello B=bye
- Cannot use a scalar value as an array
- array(2) {
- [0]=>
- int(10)
- [1]=>
- int(10)
- }
- array(2) {
- [0]=>
- int(30)
- [1]=>
- int(30)
- }
- array(3) {
- [0]=>
- int(1000)
- [1]=>
- int(2000)
- [2]=>
- int(3000)
- }
- L=100 M=200 N=300
- O= and P=
- 10 20 40 50 60 70 80
- Warning: Undefined array key 0 in %s on line %d
- Warning: Undefined array key 1 in %s on line %d
- Y=,Z=
- Warning: Undefined array key 1 in %s on line %d
- AA=10
- CC=10 DD=30
- Array
- (
- [0] => array created in f()
- [array entry created after f()] => Array
- (
- [1] => hello
- )
- )
|