1--TEST--
2Test current() function : usage variations - arrays containing different data types
3--FILE--
4<?php
5/* Prototype  : mixed current(array $array_arg)
6 * Description: Return the element currently pointed to by the internal array pointer
7 * Source code: ext/standard/array.c
8 * Alias to functions: pos
9 */
10
11/*
12 * Pass arrays of different data types as $array_arg to current() to test behaviour
13 */
14
15echo "*** Testing current() : usage variations ***\n";
16
17//get an unset variable
18$unset_var = 10;
19unset ($unset_var);
20
21// get a class
22class classA
23{
24  public function __toString() {
25    return "Class A object";
26  }
27}
28
29// heredoc string
30$heredoc = <<<EOT
31hello world
32EOT;
33
34// get a resource variable
35$fp = fopen(__FILE__, "r");
36
37// arrays of different data types to be passed to $array_arg argument
38$inputs = array(
39
40       // int data
41/*1*/  'int' => array(
42	   0,
43       1,
44       12345,
45       -2345,
46       ),
47
48       // float data
49/*2*/  'float' => array(
50       10.5,
51       -10.5,
52       12.3456789000e10,
53       12.3456789000E-10,
54       .5,
55       ),
56
57       // null data
58/*3*/ 'null' => array(
59       NULL,
60       null,
61       ),
62
63       // boolean data
64/*4*/ 'bool' => array(
65       true,
66       false,
67       TRUE,
68       FALSE,
69       ),
70
71       // empty data
72/*5*/ 'empty string' => array(
73       "",
74       '',
75       ),
76
77/*6*/ 'empty array' => array(
78       ),
79
80       // string data
81/*7*/ 'string' => array(
82       "string",
83       'string',
84       $heredoc,
85       ),
86
87       // object data
88/*8*/ 'object' => array(
89       new classA(),
90       ),
91
92       // undefined data
93/*9*/ 'undefined' => array(
94       @$undefined_var,
95       ),
96
97       // unset data
98/*10*/ 'unset' => array(
99       @$unset_var,
100       ),
101
102       // resource variable
103/*11*/ 'resource' => array(
104       $fp
105       ),
106);
107
108// loop through each element of $inputs to check the behavior of current()
109$iterator = 1;
110foreach($inputs as $key => $input) {
111  echo "\n-- Iteration $iterator : $key data --\n";
112  var_dump( current($input) );
113  $iterator++;
114};
115
116fclose($fp);
117?>
118===DONE===
119--EXPECTF--
120*** Testing current() : usage variations ***
121
122-- Iteration 1 : int data --
123int(0)
124
125-- Iteration 2 : float data --
126float(10.5)
127
128-- Iteration 3 : null data --
129NULL
130
131-- Iteration 4 : bool data --
132bool(true)
133
134-- Iteration 5 : empty string data --
135string(0) ""
136
137-- Iteration 6 : empty array data --
138bool(false)
139
140-- Iteration 7 : string data --
141string(6) "string"
142
143-- Iteration 8 : object data --
144object(classA)#%d (0) {
145}
146
147-- Iteration 9 : undefined data --
148NULL
149
150-- Iteration 10 : unset data --
151NULL
152
153-- Iteration 11 : resource data --
154resource(%d) of type (stream)
155===DONE===
156