1--TEST--
2Test array_push() function
3--FILE--
4<?php
5
6/* Prototype: int array_push( array &array );
7 * Description: Push one or more elements onto the end of array
8 and returns the new number of elements in the array.
9 */
10
11$empty_array = array();
12$number = 5;
13$str = "abc";
14
15
16/* Various combinations of arrays to be used for the test */
17$mixed_array = array(
18  array(),
19  array( 1,2,3,4,5,6,7,8,9 ),
20  array( "One", "_Two", "Three", "Four", "Five" ),
21  array( 6, "six", 7, "seven", 8, "eight", 9, "nine" ),
22  array( "a" => "aaa", "A" => "AAA", "c" => "ccc", "d" => "ddd", "e" => "eee" ),
23  array( "1" => "one", "2" => "two", "3" => "three", "4" => "four", "5" => "five" ),
24  array( 1 => "one", 2 => "two", 3 => 7, 4 => "four", 5 => "five" ),
25  array( "f" => "fff", "1" => "one", 4 => 6, "" => "blank", 2.4 => "float", "F" => "FFF",
26         "blank" => "", 3.7 => 3.7, 5.4 => 7, 6 => 8.6, '5' => "Five", "4name" => "jonny", "a" => NULL, NULL => 3 ),
27  array( 12, "name", 'age', '45' ),
28  array( array("oNe", "tWo", 4), array(10, 20, 30, 40, 50), array() ),
29  array( "one" => 1, "one" => 2, "three" => 3, 3, 4, 3 => 33, 4 => 44, 5, 6,
30          5.4 => 54, 5.7 => 57, "5.4" => 554, "5.7" => 557 )
31);
32
33/* Error Conditions */
34echo "\n*** Testing Error Conditions ***\n";
35
36/* Zero argument  */
37var_dump( array_push() );
38
39/* Scalar argument */
40var_dump( array_push($number, 22) );
41
42/* String argument */
43var_dump( array_push($str, 22) );
44
45/* Invalid Number of arguments */
46var_dump( array_push($mixed_array[1],1,2) );
47
48/* Empty Array as argument */
49var_dump( array_push($empty_array, 2) );
50
51
52/* Loop to test normal functionality with different arrays inputs */
53echo "\n*** Testing with various array inputs ***\n";
54
55$counter = 1;
56foreach( $mixed_array as $sub_array )
57{
58 echo "\n-- Input Array for Iteration $counter is --\n";
59 print_r( $sub_array );
60 echo "\nOutput after push is :\n";
61 var_dump( array_push($sub_array, 22, "abc") );
62 $counter++;
63}
64
65/* Checking for return value and the new array formed from push operation */
66echo "\n*** Checking for return value and the new array formed from push operation ***\n";
67var_dump( array_push($mixed_array[2], 22, 33, "44") );
68var_dump( $mixed_array[2] );
69
70echo"\nDone";
71?>
72--EXPECTF--
73*** Testing Error Conditions ***
74
75Warning: array_push() expects at least 1 parameter, 0 given in %s on line %d
76NULL
77
78Warning: array_push() expects parameter 1 to be array, int given in %s on line %d
79NULL
80
81Warning: array_push() expects parameter 1 to be array, string given in %s on line %d
82NULL
83int(11)
84int(1)
85
86*** Testing with various array inputs ***
87
88-- Input Array for Iteration 1 is --
89Array
90(
91)
92
93Output after push is :
94int(2)
95
96-- Input Array for Iteration 2 is --
97Array
98(
99    [0] => 1
100    [1] => 2
101    [2] => 3
102    [3] => 4
103    [4] => 5
104    [5] => 6
105    [6] => 7
106    [7] => 8
107    [8] => 9
108    [9] => 1
109    [10] => 2
110)
111
112Output after push is :
113int(13)
114
115-- Input Array for Iteration 3 is --
116Array
117(
118    [0] => One
119    [1] => _Two
120    [2] => Three
121    [3] => Four
122    [4] => Five
123)
124
125Output after push is :
126int(7)
127
128-- Input Array for Iteration 4 is --
129Array
130(
131    [0] => 6
132    [1] => six
133    [2] => 7
134    [3] => seven
135    [4] => 8
136    [5] => eight
137    [6] => 9
138    [7] => nine
139)
140
141Output after push is :
142int(10)
143
144-- Input Array for Iteration 5 is --
145Array
146(
147    [a] => aaa
148    [A] => AAA
149    [c] => ccc
150    [d] => ddd
151    [e] => eee
152)
153
154Output after push is :
155int(7)
156
157-- Input Array for Iteration 6 is --
158Array
159(
160    [1] => one
161    [2] => two
162    [3] => three
163    [4] => four
164    [5] => five
165)
166
167Output after push is :
168int(7)
169
170-- Input Array for Iteration 7 is --
171Array
172(
173    [1] => one
174    [2] => two
175    [3] => 7
176    [4] => four
177    [5] => five
178)
179
180Output after push is :
181int(7)
182
183-- Input Array for Iteration 8 is --
184Array
185(
186    [f] => fff
187    [1] => one
188    [4] => 6
189    [] => 3
190    [2] => float
191    [F] => FFF
192    [blank] =>
193    [3] => 3.7
194    [5] => Five
195    [6] => 8.6
196    [4name] => jonny
197    [a] =>
198)
199
200Output after push is :
201int(14)
202
203-- Input Array for Iteration 9 is --
204Array
205(
206    [0] => 12
207    [1] => name
208    [2] => age
209    [3] => 45
210)
211
212Output after push is :
213int(6)
214
215-- Input Array for Iteration 10 is --
216Array
217(
218    [0] => Array
219        (
220            [0] => oNe
221            [1] => tWo
222            [2] => 4
223        )
224
225    [1] => Array
226        (
227            [0] => 10
228            [1] => 20
229            [2] => 30
230            [3] => 40
231            [4] => 50
232        )
233
234    [2] => Array
235        (
236        )
237
238)
239
240Output after push is :
241int(5)
242
243-- Input Array for Iteration 11 is --
244Array
245(
246    [one] => 2
247    [three] => 3
248    [0] => 3
249    [1] => 4
250    [3] => 33
251    [4] => 44
252    [5] => 57
253    [6] => 6
254    [5.4] => 554
255    [5.7] => 557
256)
257
258Output after push is :
259int(12)
260
261*** Checking for return value and the new array formed from push operation ***
262int(8)
263array(8) {
264  [0]=>
265  string(3) "One"
266  [1]=>
267  string(4) "_Two"
268  [2]=>
269  string(5) "Three"
270  [3]=>
271  string(4) "Four"
272  [4]=>
273  string(4) "Five"
274  [5]=>
275  int(22)
276  [6]=>
277  int(33)
278  [7]=>
279  string(2) "44"
280}
281
282Done
283