1--TEST--
2gettype(), settype() and friends
3--FILE--
4<?php
5
6function foo($errno, $errstr, $errfile, $errline) {
7	var_dump($errstr);
8}
9
10set_error_handler("foo");
11
12$fp = fopen(__FILE__, "r");
13fclose($fp);
14$fp1 = fopen(__FILE__, "r");
15
16$var1 = "another string";
17$var2 = array(2,3,4);
18
19$array = array(
20	array(1,2,3),
21	$var1,
22	$var2,
23	1,
24	2.0,
25	NULL,
26	false,
27	"some string",
28	$fp,
29	$fp1,
30	new stdclass,
31);
32
33$types = array(
34	"null",
35	"integer",
36	"double",
37	"boolean",
38	"resource",
39	"array",
40	"object",
41	"string"
42	);
43
44foreach ($array as $var) {
45	var_dump(gettype($var));
46}
47
48foreach ($types as $type) {
49	foreach ($array as $var) {
50		var_dump(settype($var, $type));
51		var_dump($var);
52	}
53}
54
55echo "Done\n";
56?>
57--EXPECTF--
58string(5) "array"
59string(6) "string"
60string(5) "array"
61string(7) "integer"
62string(6) "double"
63string(4) "NULL"
64string(7) "boolean"
65string(6) "string"
66string(12) "unknown type"
67string(8) "resource"
68string(6) "object"
69bool(true)
70NULL
71bool(true)
72NULL
73bool(true)
74NULL
75bool(true)
76NULL
77bool(true)
78NULL
79bool(true)
80NULL
81bool(true)
82NULL
83bool(true)
84NULL
85bool(true)
86NULL
87bool(true)
88NULL
89bool(true)
90NULL
91bool(true)
92int(1)
93bool(true)
94int(0)
95bool(true)
96int(1)
97bool(true)
98int(1)
99bool(true)
100int(2)
101bool(true)
102int(0)
103bool(true)
104int(0)
105bool(true)
106int(0)
107bool(true)
108int(%d)
109bool(true)
110int(%d)
111string(54) "Object of class stdClass could not be converted to int"
112bool(true)
113int(%d)
114bool(true)
115float(1)
116bool(true)
117float(0)
118bool(true)
119float(1)
120bool(true)
121float(1)
122bool(true)
123float(2)
124bool(true)
125float(0)
126bool(true)
127float(0)
128bool(true)
129float(0)
130bool(true)
131float(%d)
132bool(true)
133float(%d)
134string(57) "Object of class stdClass could not be converted to double"
135bool(true)
136float(%d)
137bool(true)
138bool(true)
139bool(true)
140bool(true)
141bool(true)
142bool(true)
143bool(true)
144bool(true)
145bool(true)
146bool(true)
147bool(true)
148bool(false)
149bool(true)
150bool(false)
151bool(true)
152bool(true)
153bool(true)
154bool(true)
155bool(true)
156bool(true)
157bool(true)
158bool(true)
159string(42) "settype(): Cannot convert to resource type"
160bool(false)
161array(3) {
162  [0]=>
163  int(1)
164  [1]=>
165  int(2)
166  [2]=>
167  int(3)
168}
169string(42) "settype(): Cannot convert to resource type"
170bool(false)
171string(14) "another string"
172string(42) "settype(): Cannot convert to resource type"
173bool(false)
174array(3) {
175  [0]=>
176  int(2)
177  [1]=>
178  int(3)
179  [2]=>
180  int(4)
181}
182string(42) "settype(): Cannot convert to resource type"
183bool(false)
184int(1)
185string(42) "settype(): Cannot convert to resource type"
186bool(false)
187float(2)
188string(42) "settype(): Cannot convert to resource type"
189bool(false)
190NULL
191string(42) "settype(): Cannot convert to resource type"
192bool(false)
193bool(false)
194string(42) "settype(): Cannot convert to resource type"
195bool(false)
196string(11) "some string"
197string(42) "settype(): Cannot convert to resource type"
198bool(false)
199resource(%d) of type (Unknown)
200string(42) "settype(): Cannot convert to resource type"
201bool(false)
202resource(%d) of type (stream)
203string(42) "settype(): Cannot convert to resource type"
204bool(false)
205object(stdClass)#%d (0) {
206}
207bool(true)
208array(3) {
209  [0]=>
210  int(1)
211  [1]=>
212  int(2)
213  [2]=>
214  int(3)
215}
216bool(true)
217array(1) {
218  [0]=>
219  string(14) "another string"
220}
221bool(true)
222array(3) {
223  [0]=>
224  int(2)
225  [1]=>
226  int(3)
227  [2]=>
228  int(4)
229}
230bool(true)
231array(1) {
232  [0]=>
233  int(1)
234}
235bool(true)
236array(1) {
237  [0]=>
238  float(2)
239}
240bool(true)
241array(0) {
242}
243bool(true)
244array(1) {
245  [0]=>
246  bool(false)
247}
248bool(true)
249array(1) {
250  [0]=>
251  string(11) "some string"
252}
253bool(true)
254array(1) {
255  [0]=>
256  resource(%d) of type (Unknown)
257}
258bool(true)
259array(1) {
260  [0]=>
261  resource(%d) of type (stream)
262}
263bool(true)
264array(0) {
265}
266bool(true)
267object(stdClass)#%d (3) {
268  [0]=>
269  int(1)
270  [1]=>
271  int(2)
272  [2]=>
273  int(3)
274}
275bool(true)
276object(stdClass)#%d (1) {
277  ["scalar"]=>
278  string(14) "another string"
279}
280bool(true)
281object(stdClass)#%d (3) {
282  [0]=>
283  int(2)
284  [1]=>
285  int(3)
286  [2]=>
287  int(4)
288}
289bool(true)
290object(stdClass)#%d (1) {
291  ["scalar"]=>
292  int(1)
293}
294bool(true)
295object(stdClass)#%d (1) {
296  ["scalar"]=>
297  float(2)
298}
299bool(true)
300object(stdClass)#%d (0) {
301}
302bool(true)
303object(stdClass)#%d (1) {
304  ["scalar"]=>
305  bool(false)
306}
307bool(true)
308object(stdClass)#%d (1) {
309  ["scalar"]=>
310  string(11) "some string"
311}
312bool(true)
313object(stdClass)#%d (1) {
314  ["scalar"]=>
315  resource(%d) of type (Unknown)
316}
317bool(true)
318object(stdClass)#%d (1) {
319  ["scalar"]=>
320  resource(%d) of type (stream)
321}
322bool(true)
323object(stdClass)#%d (0) {
324}
325string(26) "Array to string conversion"
326bool(true)
327string(5) "Array"
328bool(true)
329string(14) "another string"
330string(26) "Array to string conversion"
331bool(true)
332string(5) "Array"
333bool(true)
334string(1) "1"
335bool(true)
336string(1) "2"
337bool(true)
338string(0) ""
339bool(true)
340string(0) ""
341bool(true)
342string(11) "some string"
343bool(true)
344string(14) "Resource id #%d"
345bool(true)
346string(14) "Resource id #%d"
347string(57) "Object of class stdClass could not be converted to string"
348string(45) "Object of class stdClass to string conversion"
349bool(true)
350string(6) "Object"
351Done
352