Annotation of embedaddon/php/ext/standard/tests/array/array_slice_variation9.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Test array_slice() function : usage variations - referenced variables
! 3: --INI--
! 4: allow_call_time_pass_reference=on
! 5: --FILE--
! 6: <?php
! 7: /* Prototype : array array_slice(array $input, int $offset [, int $length [, bool $preserve_keys]])
! 8: * Description: Returns elements specified by offset and length
! 9: * Source code: ext/standard/array.c
! 10: */
! 11:
! 12: /*
! 13: * Test array_slice() when:
! 14: * 1. Passed an array of referenced variables
! 15: * 2. $input argument is passed by reference
! 16: */
! 17:
! 18: echo "*** Testing array_slice() : usage variations ***\n";
! 19:
! 20: $val1 = 'one';
! 21: $val2 = 'two';
! 22: $val3 = 'three';
! 23:
! 24: echo "\n-- Array of referenced variables (\$preserve_keys = default) --\n";
! 25: $input = array(3 => &$val1, 2 => &$val2, 1 => &$val3);
! 26: var_dump(array_slice($input, 1, 2));
! 27:
! 28: echo "-- Change \$val2 (\$preserve_keys = TRUE) --\n";
! 29: $val2 = 'hello, world';
! 30: var_dump(array_slice($input, 1, 2, true));
! 31:
! 32: echo "\n-- Pass array by reference --\n";
! 33: $new_input = array (1, 2, 3);
! 34: var_dump(array_slice(&$new_input, 1));
! 35: echo "-- Check passed array: --\n";
! 36: var_dump($new_input);
! 37:
! 38: echo "Done";
! 39: ?>
! 40:
! 41: --EXPECTF--
! 42: *** Testing array_slice() : usage variations ***
! 43:
! 44: -- Array of referenced variables ($preserve_keys = default) --
! 45: array(2) {
! 46: [0]=>
! 47: &string(3) "two"
! 48: [1]=>
! 49: &string(5) "three"
! 50: }
! 51: -- Change $val2 ($preserve_keys = TRUE) --
! 52: array(2) {
! 53: [2]=>
! 54: &string(12) "hello, world"
! 55: [1]=>
! 56: &string(5) "three"
! 57: }
! 58:
! 59: -- Pass array by reference --
! 60: array(2) {
! 61: [0]=>
! 62: int(2)
! 63: [1]=>
! 64: int(3)
! 65: }
! 66: -- Check passed array: --
! 67: array(3) {
! 68: [0]=>
! 69: int(1)
! 70: [1]=>
! 71: int(2)
! 72: [2]=>
! 73: int(3)
! 74: }
! 75: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>