1--TEST--
2Test array_search() function : usage variations - different needle values
3--FILE--
4<?php
5/*
6 * Prototype  : mixed array_search ( mixed $needle, array $haystack [, bool $strict] )
7 * Description: Searches haystack for needle and returns the key if it is found in the array, FALSE otherwise
8 * Source Code: ext/standard/array.c
9*/
10
11/* Test array_search() with different possible needle values */
12
13echo "*** Testing array_search() with different needle values ***\n";
14$arrays = array (
15  array(0),
16  array("a" => "A", 2 => "B", "C" => 3, 4 => 4, "one" => 1, "" => NULL, "b", "ab", "abcd"),
17  array(4, array(1, 2 => 3), "one" => 1, "5" => 5 ),
18  array(-1, -2, -3, -4, -2.989888, "-0.005" => "neg0.005", 2.0 => "float2", "-.9" => -.9),
19  array(TRUE, FALSE),
20  array("", array()),
21  array("abcd\x00abcd\x00abcd"),
22  array("abcd\tabcd\nabcd\rabcd\0abcdefghij")
23);
24
25$array_compare = array (
26  4,
27  "4",
28  4.00,
29  "b",
30  "5",
31  -2,
32  -2.0,
33  -2.98989,
34  "-.9",
35  "True",
36  "",
37  array(),
38  NULL,
39  "ab",
40  "abcd",
41  0.0,
42  -0,
43  "abcd\x00abcd\x00abcd"
44);
45/* loop to check if elements in $array_compare exist in $arrays
46   using array_search() */
47$counter = 1;
48foreach($arrays as $array) {
49  foreach($array_compare as $compare) {
50    echo "-- Iteration $counter --\n";
51    //strict option OFF
52    var_dump(array_search($compare,$array));
53    //strict option ON
54    var_dump(array_search($compare,$array,TRUE));
55    //strict option OFF
56    var_dump(array_search($compare,$array,FALSE));
57    $counter++;
58 }
59}
60
61echo "Done\n";
62?>
63--EXPECTF--
64*** Testing array_search() with different needle values ***
65-- Iteration 1 --
66bool(false)
67bool(false)
68bool(false)
69-- Iteration 2 --
70bool(false)
71bool(false)
72bool(false)
73-- Iteration 3 --
74bool(false)
75bool(false)
76bool(false)
77-- Iteration 4 --
78int(0)
79bool(false)
80int(0)
81-- Iteration 5 --
82bool(false)
83bool(false)
84bool(false)
85-- Iteration 6 --
86bool(false)
87bool(false)
88bool(false)
89-- Iteration 7 --
90bool(false)
91bool(false)
92bool(false)
93-- Iteration 8 --
94bool(false)
95bool(false)
96bool(false)
97-- Iteration 9 --
98bool(false)
99bool(false)
100bool(false)
101-- Iteration 10 --
102int(0)
103bool(false)
104int(0)
105-- Iteration 11 --
106int(0)
107bool(false)
108int(0)
109-- Iteration 12 --
110bool(false)
111bool(false)
112bool(false)
113-- Iteration 13 --
114int(0)
115bool(false)
116int(0)
117-- Iteration 14 --
118int(0)
119bool(false)
120int(0)
121-- Iteration 15 --
122int(0)
123bool(false)
124int(0)
125-- Iteration 16 --
126int(0)
127bool(false)
128int(0)
129-- Iteration 17 --
130int(0)
131int(0)
132int(0)
133-- Iteration 18 --
134int(0)
135bool(false)
136int(0)
137-- Iteration 19 --
138int(4)
139int(4)
140int(4)
141-- Iteration 20 --
142int(4)
143bool(false)
144int(4)
145-- Iteration 21 --
146int(4)
147bool(false)
148int(4)
149-- Iteration 22 --
150int(5)
151int(5)
152int(5)
153-- Iteration 23 --
154bool(false)
155bool(false)
156bool(false)
157-- Iteration 24 --
158bool(false)
159bool(false)
160bool(false)
161-- Iteration 25 --
162bool(false)
163bool(false)
164bool(false)
165-- Iteration 26 --
166bool(false)
167bool(false)
168bool(false)
169-- Iteration 27 --
170bool(false)
171bool(false)
172bool(false)
173-- Iteration 28 --
174bool(false)
175bool(false)
176bool(false)
177-- Iteration 29 --
178string(0) ""
179bool(false)
180string(0) ""
181-- Iteration 30 --
182string(0) ""
183bool(false)
184string(0) ""
185-- Iteration 31 --
186string(0) ""
187string(0) ""
188string(0) ""
189-- Iteration 32 --
190int(6)
191int(6)
192int(6)
193-- Iteration 33 --
194int(7)
195int(7)
196int(7)
197-- Iteration 34 --
198string(1) "a"
199bool(false)
200string(1) "a"
201-- Iteration 35 --
202string(1) "a"
203bool(false)
204string(1) "a"
205-- Iteration 36 --
206bool(false)
207bool(false)
208bool(false)
209-- Iteration 37 --
210int(0)
211int(0)
212int(0)
213-- Iteration 38 --
214int(0)
215bool(false)
216int(0)
217-- Iteration 39 --
218int(0)
219bool(false)
220int(0)
221-- Iteration 40 --
222bool(false)
223bool(false)
224bool(false)
225-- Iteration 41 --
226int(5)
227bool(false)
228int(5)
229-- Iteration 42 --
230bool(false)
231bool(false)
232bool(false)
233-- Iteration 43 --
234bool(false)
235bool(false)
236bool(false)
237-- Iteration 44 --
238bool(false)
239bool(false)
240bool(false)
241-- Iteration 45 --
242bool(false)
243bool(false)
244bool(false)
245-- Iteration 46 --
246bool(false)
247bool(false)
248bool(false)
249-- Iteration 47 --
250bool(false)
251bool(false)
252bool(false)
253-- Iteration 48 --
254bool(false)
255bool(false)
256bool(false)
257-- Iteration 49 --
258bool(false)
259bool(false)
260bool(false)
261-- Iteration 50 --
262bool(false)
263bool(false)
264bool(false)
265-- Iteration 51 --
266bool(false)
267bool(false)
268bool(false)
269-- Iteration 52 --
270bool(false)
271bool(false)
272bool(false)
273-- Iteration 53 --
274bool(false)
275bool(false)
276bool(false)
277-- Iteration 54 --
278bool(false)
279bool(false)
280bool(false)
281-- Iteration 55 --
282bool(false)
283bool(false)
284bool(false)
285-- Iteration 56 --
286bool(false)
287bool(false)
288bool(false)
289-- Iteration 57 --
290bool(false)
291bool(false)
292bool(false)
293-- Iteration 58 --
294bool(false)
295bool(false)
296bool(false)
297-- Iteration 59 --
298bool(false)
299bool(false)
300bool(false)
301-- Iteration 60 --
302int(1)
303int(1)
304int(1)
305-- Iteration 61 --
306int(1)
307bool(false)
308int(1)
309-- Iteration 62 --
310bool(false)
311bool(false)
312bool(false)
313-- Iteration 63 --
314string(3) "-.9"
315bool(false)
316string(3) "-.9"
317-- Iteration 64 --
318bool(false)
319bool(false)
320bool(false)
321-- Iteration 65 --
322bool(false)
323bool(false)
324bool(false)
325-- Iteration 66 --
326bool(false)
327bool(false)
328bool(false)
329-- Iteration 67 --
330bool(false)
331bool(false)
332bool(false)
333-- Iteration 68 --
334bool(false)
335bool(false)
336bool(false)
337-- Iteration 69 --
338bool(false)
339bool(false)
340bool(false)
341-- Iteration 70 --
342int(2)
343bool(false)
344int(2)
345-- Iteration 71 --
346int(2)
347bool(false)
348int(2)
349-- Iteration 72 --
350bool(false)
351bool(false)
352bool(false)
353-- Iteration 73 --
354int(0)
355bool(false)
356int(0)
357-- Iteration 74 --
358int(0)
359bool(false)
360int(0)
361-- Iteration 75 --
362int(0)
363bool(false)
364int(0)
365-- Iteration 76 --
366int(0)
367bool(false)
368int(0)
369-- Iteration 77 --
370int(0)
371bool(false)
372int(0)
373-- Iteration 78 --
374int(0)
375bool(false)
376int(0)
377-- Iteration 79 --
378int(0)
379bool(false)
380int(0)
381-- Iteration 80 --
382int(0)
383bool(false)
384int(0)
385-- Iteration 81 --
386int(0)
387bool(false)
388int(0)
389-- Iteration 82 --
390int(0)
391bool(false)
392int(0)
393-- Iteration 83 --
394int(1)
395bool(false)
396int(1)
397-- Iteration 84 --
398int(1)
399bool(false)
400int(1)
401-- Iteration 85 --
402int(1)
403bool(false)
404int(1)
405-- Iteration 86 --
406int(0)
407bool(false)
408int(0)
409-- Iteration 87 --
410int(0)
411bool(false)
412int(0)
413-- Iteration 88 --
414int(1)
415bool(false)
416int(1)
417-- Iteration 89 --
418int(1)
419bool(false)
420int(1)
421-- Iteration 90 --
422int(0)
423bool(false)
424int(0)
425-- Iteration 91 --
426bool(false)
427bool(false)
428bool(false)
429-- Iteration 92 --
430bool(false)
431bool(false)
432bool(false)
433-- Iteration 93 --
434bool(false)
435bool(false)
436bool(false)
437-- Iteration 94 --
438bool(false)
439bool(false)
440bool(false)
441-- Iteration 95 --
442bool(false)
443bool(false)
444bool(false)
445-- Iteration 96 --
446bool(false)
447bool(false)
448bool(false)
449-- Iteration 97 --
450bool(false)
451bool(false)
452bool(false)
453-- Iteration 98 --
454bool(false)
455bool(false)
456bool(false)
457-- Iteration 99 --
458bool(false)
459bool(false)
460bool(false)
461-- Iteration 100 --
462bool(false)
463bool(false)
464bool(false)
465-- Iteration 101 --
466int(0)
467int(0)
468int(0)
469-- Iteration 102 --
470int(1)
471int(1)
472int(1)
473-- Iteration 103 --
474int(0)
475bool(false)
476int(0)
477-- Iteration 104 --
478bool(false)
479bool(false)
480bool(false)
481-- Iteration 105 --
482bool(false)
483bool(false)
484bool(false)
485-- Iteration 106 --
486int(0)
487bool(false)
488int(0)
489-- Iteration 107 --
490int(0)
491bool(false)
492int(0)
493-- Iteration 108 --
494bool(false)
495bool(false)
496bool(false)
497-- Iteration 109 --
498bool(false)
499bool(false)
500bool(false)
501-- Iteration 110 --
502bool(false)
503bool(false)
504bool(false)
505-- Iteration 111 --
506bool(false)
507bool(false)
508bool(false)
509-- Iteration 112 --
510bool(false)
511bool(false)
512bool(false)
513-- Iteration 113 --
514bool(false)
515bool(false)
516bool(false)
517-- Iteration 114 --
518bool(false)
519bool(false)
520bool(false)
521-- Iteration 115 --
522bool(false)
523bool(false)
524bool(false)
525-- Iteration 116 --
526bool(false)
527bool(false)
528bool(false)
529-- Iteration 117 --
530bool(false)
531bool(false)
532bool(false)
533-- Iteration 118 --
534bool(false)
535bool(false)
536bool(false)
537-- Iteration 119 --
538bool(false)
539bool(false)
540bool(false)
541-- Iteration 120 --
542bool(false)
543bool(false)
544bool(false)
545-- Iteration 121 --
546bool(false)
547bool(false)
548bool(false)
549-- Iteration 122 --
550bool(false)
551bool(false)
552bool(false)
553-- Iteration 123 --
554bool(false)
555bool(false)
556bool(false)
557-- Iteration 124 --
558int(0)
559bool(false)
560int(0)
561-- Iteration 125 --
562int(0)
563bool(false)
564int(0)
565-- Iteration 126 --
566int(0)
567int(0)
568int(0)
569-- Iteration 127 --
570bool(false)
571bool(false)
572bool(false)
573-- Iteration 128 --
574bool(false)
575bool(false)
576bool(false)
577-- Iteration 129 --
578bool(false)
579bool(false)
580bool(false)
581-- Iteration 130 --
582bool(false)
583bool(false)
584bool(false)
585-- Iteration 131 --
586bool(false)
587bool(false)
588bool(false)
589-- Iteration 132 --
590bool(false)
591bool(false)
592bool(false)
593-- Iteration 133 --
594bool(false)
595bool(false)
596bool(false)
597-- Iteration 134 --
598bool(false)
599bool(false)
600bool(false)
601-- Iteration 135 --
602bool(false)
603bool(false)
604bool(false)
605-- Iteration 136 --
606bool(false)
607bool(false)
608bool(false)
609-- Iteration 137 --
610bool(false)
611bool(false)
612bool(false)
613-- Iteration 138 --
614bool(false)
615bool(false)
616bool(false)
617-- Iteration 139 --
618bool(false)
619bool(false)
620bool(false)
621-- Iteration 140 --
622bool(false)
623bool(false)
624bool(false)
625-- Iteration 141 --
626bool(false)
627bool(false)
628bool(false)
629-- Iteration 142 --
630int(0)
631bool(false)
632int(0)
633-- Iteration 143 --
634int(0)
635bool(false)
636int(0)
637-- Iteration 144 --
638bool(false)
639bool(false)
640bool(false)
641Done
642