1--TEST--
2list() with keys, evaluation order #2
3--FILE--
4<?php
5
6// All the following should print 'a' then 'b'
7
8list($a, $b) = ['a', 'b'];
9var_dump($a);
10var_dump($b);
11
12list(0 => $a, 1 => $b) = ['a', 'b'];
13var_dump($a);
14var_dump($b);
15
16list(1 => $b, 0 => $a) = ['a', 'b'];
17var_dump($a);
18var_dump($b);
19
20$arr = [];
21list($arr[], $arr[]) = ['a', 'b'];
22var_dump($arr[0]);
23var_dump($arr[1]);
24
25$arr = [];
26list(0 => $arr[], 1 => $arr[]) = ['a', 'b'];
27var_dump($arr[0]);
28var_dump($arr[1]);
29
30$arr = [];
31list(1 => $arr[], 0 => $arr[]) = ['b', 'a'];
32var_dump($arr[0]);
33var_dump($arr[1]);
34
35$arr = [];
36list(list(1 => $arr[], 0 => $arr[])) = [['b', 'a']];
37var_dump($arr[0]);
38var_dump($arr[1]);
39
40$arr = [];
41list('key1' => $arr[], 'key2' => $arr[]) = ['key2' => 'b', 'key1' => 'a'];
42var_dump($arr[0]);
43var_dump($arr[1]);
44
45// This should print 'foo'
46$a = 0;
47list($a => $a) = ['foo', 'bar'];
48var_dump($a);
49
50// This should print 'bar' then 'foo'
51$a = 0;
52$b = 1;
53list($b => $a, $a => $c) = ['bar' => 'foo', 1 => 'bar'];
54var_dump($a);
55var_dump($c);
56
57?>
58--EXPECT--
59string(1) "a"
60string(1) "b"
61string(1) "a"
62string(1) "b"
63string(1) "a"
64string(1) "b"
65string(1) "a"
66string(1) "b"
67string(1) "a"
68string(1) "b"
69string(1) "a"
70string(1) "b"
71string(1) "a"
72string(1) "b"
73string(1) "a"
74string(1) "b"
75string(3) "foo"
76string(3) "bar"
77string(3) "foo"
78