1--TEST--
2Test sprintf() function : usage variations - with all types of values for arg1 argument
3--FILE--
4<?php
5/* Prototype  : string sprintf(string $format [, mixed $arg1 [, mixed ...]])
6 * Description: Return a formatted string
7 * Source code: ext/standard/formatted_print.c
8*/
9
10error_reporting(E_ALL & ~E_NOTICE);
11
12echo "*** Testing sprintf() : with different types of values passed for arg1 argument ***\n";
13
14// initialing required variables
15$format = '%s';
16$arg2 = 'third argument';
17
18//get an unset variable
19$unset_var = 10;
20unset ($unset_var);
21
22// declaring class
23class sample
24{
25  public function __toString() {
26    return "Object";
27  }
28}
29
30// creating a file resource
31$file_handle = fopen(__FILE__, 'r');
32
33//array of values to iterate over
34$values = array(
35
36      // int data
37      0,
38      1,
39      12345,
40      -2345,
41
42      // float data
43      10.5,
44      -10.5,
45      10.1234567e10,
46      10.7654321E-10,
47      .5,
48
49      // array data
50      array(),
51      array(0),
52      array(1),
53      array(1, 2),
54      array('color' => 'red', 'item' => 'pen'),
55
56      // null data
57      NULL,
58      null,
59
60      // boolean data
61      true,
62      false,
63      TRUE,
64      FALSE,
65
66      // empty data
67      "",
68      '',
69
70      // string data
71      "string",
72      'string',
73
74      // object data
75      new sample(),
76
77      // undefined data
78      @$undefined_var,
79
80      // unset data
81      @$unset_var,
82
83      // resource data
84      $file_handle
85);
86
87// loop through each element of the array for arg1
88
89$count = 1;
90foreach($values as $value) {
91  echo "\n-- Iteration $count --\n";
92
93  // with two arguments
94  var_dump( sprintf($format, $value) );
95
96  // with three arguments
97  var_dump( sprintf($format, $value, $arg2) );
98
99  $count++;
100};
101
102// closing the resource
103fclose($file_handle);
104
105echo "Done";
106?>
107--EXPECTF--
108*** Testing sprintf() : with different types of values passed for arg1 argument ***
109
110-- Iteration 1 --
111string(1) "0"
112string(1) "0"
113
114-- Iteration 2 --
115string(1) "1"
116string(1) "1"
117
118-- Iteration 3 --
119string(5) "12345"
120string(5) "12345"
121
122-- Iteration 4 --
123string(5) "-2345"
124string(5) "-2345"
125
126-- Iteration 5 --
127string(4) "10.5"
128string(4) "10.5"
129
130-- Iteration 6 --
131string(5) "-10.5"
132string(5) "-10.5"
133
134-- Iteration 7 --
135string(12) "101234567000"
136string(12) "101234567000"
137
138-- Iteration 8 --
139string(13) "1.07654321E-9"
140string(13) "1.07654321E-9"
141
142-- Iteration 9 --
143string(3) "0.5"
144string(3) "0.5"
145
146-- Iteration 10 --
147string(5) "Array"
148string(5) "Array"
149
150-- Iteration 11 --
151string(5) "Array"
152string(5) "Array"
153
154-- Iteration 12 --
155string(5) "Array"
156string(5) "Array"
157
158-- Iteration 13 --
159string(5) "Array"
160string(5) "Array"
161
162-- Iteration 14 --
163string(5) "Array"
164string(5) "Array"
165
166-- Iteration 15 --
167string(0) ""
168string(0) ""
169
170-- Iteration 16 --
171string(0) ""
172string(0) ""
173
174-- Iteration 17 --
175string(1) "1"
176string(1) "1"
177
178-- Iteration 18 --
179string(0) ""
180string(0) ""
181
182-- Iteration 19 --
183string(1) "1"
184string(1) "1"
185
186-- Iteration 20 --
187string(0) ""
188string(0) ""
189
190-- Iteration 21 --
191string(0) ""
192string(0) ""
193
194-- Iteration 22 --
195string(0) ""
196string(0) ""
197
198-- Iteration 23 --
199string(6) "string"
200string(6) "string"
201
202-- Iteration 24 --
203string(6) "string"
204string(6) "string"
205
206-- Iteration 25 --
207string(6) "Object"
208string(6) "Object"
209
210-- Iteration 26 --
211string(0) ""
212string(0) ""
213
214-- Iteration 27 --
215string(0) ""
216string(0) ""
217
218-- Iteration 28 --
219string(%d) "Resource id #%d"
220string(%d) "Resource id #%d"
221Done