|
1 | 1 | --TEST-- |
2 | | -Test array_get() function |
| 2 | +Test array_get_path() function |
3 | 3 | --FILE-- |
4 | 4 | <?php |
5 | | -echo "*** Testing array_get() ***\n"; |
| 5 | +echo "*** Testing array_get_path() ***\n"; |
6 | 6 |
|
7 | 7 | // Basic nested array access |
8 | 8 | $array = ['products' => ['desk' => ['price' => 100]]]; |
9 | 9 |
|
10 | 10 | // Test nested access with array path |
11 | | -var_dump(array_get($array, ['products', 'desk', 'price'])); |
| 11 | +var_dump(array_get_path($array, ['products', 'desk', 'price'])); |
12 | 12 |
|
13 | 13 | // Test with default value when path doesn't exist |
14 | | -var_dump(array_get($array, ['products', 'desk', 'discount'], 5)); |
| 14 | +var_dump(array_get_path($array, ['products', 'desk', 'discount'], 5)); |
15 | 15 |
|
16 | 16 | // Test simple path with single level |
17 | 17 | $simple = ['name' => 'John', 'age' => 30]; |
18 | | -var_dump(array_get($simple, ['name'])); |
19 | | -var_dump(array_get($simple, ['missing'], 'default')); |
| 18 | +var_dump(array_get_path($simple, ['name'])); |
| 19 | +var_dump(array_get_path($simple, ['missing'], 'default')); |
20 | 20 |
|
21 | 21 | // Test single level key that doesn't exist |
22 | | -var_dump(array_get($array, ['missing'])); |
| 22 | +var_dump(array_get_path($array, ['missing'])); |
23 | 23 |
|
24 | 24 | // Test with integer key in path |
25 | 25 | $users = ['users' => [['name' => 'Alice'], ['name' => 'Bob']]]; |
26 | | -var_dump(array_get($users, ['users', 0, 'name'])); |
27 | | -var_dump(array_get($users, ['users', 1, 'name'])); |
| 26 | +var_dump(array_get_path($users, ['users', 0, 'name'])); |
| 27 | +var_dump(array_get_path($users, ['users', 1, 'name'])); |
28 | 28 |
|
29 | 29 | // Test nested with missing intermediate key |
30 | | -var_dump(array_get($array, ['products', 'chair', 'price'], 75)); |
| 30 | +var_dump(array_get_path($array, ['products', 'chair', 'price'], 75)); |
31 | 31 |
|
32 | 32 | // Test with invalid segment type in array path |
33 | 33 | try { |
34 | | - var_dump(array_get($array, ['products', new stdClass(), 'price'], 'invalid')); |
| 34 | + var_dump(array_get_path($array, ['products', new stdClass(), 'price'], 'invalid')); |
35 | 35 | } catch (TypeError $e) { |
36 | 36 | echo $e->getMessage() . "\n"; |
37 | 37 | } |
38 | 38 |
|
39 | 39 | // Test with references - ensure returned value is a copy, not a reference |
40 | 40 | $ref_array = ['data' => ['value' => 'original']]; |
41 | 41 | $ref =& $ref_array['data']['value']; |
42 | | -$result = array_get($ref_array, ['data', 'value']); |
| 42 | +$result = array_get_path($ref_array, ['data', 'value']); |
43 | 43 | var_dump($result); |
44 | 44 | $ref = 'modified'; |
45 | 45 | var_dump($result); // Should still be 'original' (not affected by reference change) |
46 | 46 |
|
47 | 47 | // Test with default value being a reference |
48 | 48 | $default_value = 'default'; |
49 | 49 | $default_ref =& $default_value; |
50 | | -$result_with_ref_default = array_get($ref_array, ['missing', 'key'], $default_ref); |
| 50 | +$result_with_ref_default = array_get_path($ref_array, ['missing', 'key'], $default_ref); |
51 | 51 | var_dump($result_with_ref_default); |
52 | 52 | $default_value = 'changed'; |
53 | 53 | var_dump($result_with_ref_default); // Should still be 'default' (not affected by reference change) |
54 | 54 |
|
55 | 55 | // Test with reference to an array in the path |
56 | 56 | $array2 = ['world']; |
57 | 57 | $array_with_ref = ['hello' => &$array2]; |
58 | | -var_dump(array_get($array_with_ref, ['hello', 0])); |
| 58 | +var_dump(array_get_path($array_with_ref, ['hello', 0])); |
59 | 59 |
|
60 | 60 | // Test with path segment that is a reference |
61 | 61 | $key1 = 'products'; |
62 | 62 | $key2 = 'desk'; |
63 | 63 | $path_with_refs = [&$key1, &$key2, 'price']; |
64 | | -var_dump(array_get($array, $path_with_refs)); |
| 64 | +var_dump(array_get_path($array, $path_with_refs)); |
65 | 65 |
|
66 | 66 | echo "Done"; |
67 | 67 | ?> |
68 | 68 | --EXPECT-- |
69 | | -*** Testing array_get() *** |
| 69 | +*** Testing array_get_path() *** |
70 | 70 | int(100) |
71 | 71 | int(5) |
72 | 72 | string(4) "John" |
|
0 commit comments