1--TEST--
2Test vsprintf() function : usage variations - string formats with non-string values
3--FILE--
4<?php
5/* Prototype  : string vsprintf(string format, array args)
6 * Description: Return a formatted string
7 * Source code: ext/standard/formatted_print.c
8*/
9
10/*
11 * Test vsprintf() when different string formats and non-string values are passed to
12 * the '$format' and '$args' arguments of the function
13*/
14
15error_reporting(E_ALL & ~E_NOTICE);
16
17echo "*** Testing vsprintf() : string formats and non-string values ***\n";
18
19// defining array of string formats
20$formats =
21  '%s %+s %-s
22   %ls %4s %-4s
23   %10.4s %-10.4s %04s %04.4s
24   %\'#2s %\'2s %\'$2s %\'_2s
25   %3$s %4$s %1$s %2$s';
26
27// Arrays of non string values for the format defined in $format.
28// Each sub array contains non string values which correspond to each format in $format
29$args_array = array(
30
31  // array of float values
32  array(2.2, .2, 10.2,
33        123456.234, -1234.6789, +1234.6789,
34        2.1234567e10, +2.7654321e10, -2.7654321e10, 2.1234567e10,
35        12345.780, 12.000000011111, -12.00000111111, -123456.234,
36        3.33, +4.44, 1.11,-2.22 ),
37
38 // array of int values
39 array(2, -2, +2,
40       123456, -12346789, +12346789,
41       123200, +20000, -40000, 22212,
42       12345780, 1211111, -12111111, -12345634,
43       3, +4, 1,-2 ),
44
45
46  // different arrays
47  array( array(0), array(1, 2), array(-1, -1),
48         array("123"), array('-123'), array("-123"),
49         array(true), array(false), array(TRUE), array(FALSE),
50         array("123hello"), array("1", "2"), array('123hello'), array(12=>"12twelve"),
51         array("3"), array("4"), array("1"), array("2") ),
52
53  // array of boolean data
54  array( true, TRUE, false,
55         TRUE, FALSE, 1,
56         true, false, TRUE, FALSE,
57         0, 1, 1, 0,
58         1, TRUE, 0, FALSE),
59
60);
61
62// looping to test vsprintf() with different string formats from the above $format array
63// and with non-string values from the above $args_array array
64$counter = 1;
65foreach($args_array as $args) {
66  echo "\n-- Iteration $counter --\n";
67  var_dump( vsprintf($formats, $args) );
68  $counter++;
69}
70
71?>
72===DONE===
73--EXPECT--
74*** Testing vsprintf() : string formats and non-string values ***
75
76-- Iteration 1 --
77string(174) "2.2 0.2 10.2
78   123456.234 -1234.6789 1234.6789
79         2123 2765       -27654321000 2123
80   12345.78 12.000000011111 -12.00000111111 -123456.234
81   10.2 123456.234 2.2 0.2"
82
83-- Iteration 2 --
84string(130) "2 -2 2
85   123456 -12346789 12346789
86         1232 2000       -40000 2221
87   12345780 1211111 -12111111 -12345634
88   2 123456 2 -2"
89
90-- Iteration 3 --
91string(129) "Array Array Array
92   Array Array Array
93         Arra Arra       Array Arra
94   Array Array Array Array
95   Array Array Array Array"
96
97-- Iteration 4 --
98string(79) "1 1
99   1      1
100            1            0001 0000
101   #0 1 $1 _0
102    1 1 1"
103===DONE===