printf


string apg

OUTPUTS a formatted STRING.

This function is SELF-SUFFICIENT, because it does not require auxiliary functions to display the result.





Undue substitutions will produce unpredictable results.



<?php

int printf 
str $format [, mix $arg1 [, ... , mix $argN ]] )


where,

$format STRING FORMATwith internal
                                          % 
replaceable specifiers
                
SEE the below TABLE )

$arg1, ... , $argN SUBSTITUTE ARGUMENTS

?>

$format


Each SPECIFIER, present in FORMATTED STRING, must have its own SUBSTITUTE ARGUMENT.

SPECIFIER % TYPE ARGUMENT COMMENT
%%   literally %  
%b INTEGER Represented as BINARY  
%c INTEGER Represented as CHARACTER - ASCII  
%d INTEGER Represented as DECIMAL NUMBER +/-
%e FLOAT SCIENTIFIC NOTATION  
%E FLOAT As %e with the use of UPPERCASE  
%u INTEGER Presented as an UNSIGNED DECIMAL number. no signal
%f FLOAT Compatible with LOCALE  
%F FLOAT As %f not compatible with LOCALE  
%g FLOAT Shorter of %e and %f.  
%G FLOAT Shorter of %E e %F  
%o INTEGER Presented as an OCTAL number  
%s STRING STRING
 
%x INTEGER Presented as an HEXADECIMAL number lowercase
%X INTEGER Presented as an HEXADECIMAL number UPERCASE
ADDITIONAL FORMATS
0 ZERO FILLING WITH ZERO Number of desired decimal places
" " SPACE FILLING WITH SPACES Number of desired places
- HYPHEN Left-aligned value Right-aligned as default
N1.N2 N1 INTEGER
NUMBER OF DIGITS
N2 DECIMAL NUMBER OF DIGITS
ed48


$arg1


First substitute argument.



$arg2 ... $argN


Additional substitute arguments.



  1 EXERCISE   

<?php

$strA 
'If everyone liked %s, what would be the %s?';

$arg1 'BLUE';
$arg2 'YELLOW';

/* - - - - - - - - - - - - - - - - - - - - - - - -
   This function is AUTO SUFFICIENT
   
   The displayed data is made directly
   without the need for ancillary functions
   - - - - - - - - - - - - - - - - - - - - - - - - */

printf($strA$arg1$arg2);

echo 
'<br><br>';

?> 

 RESULT   

If everyone liked  BLUE , what would be the  YELLOW ?

  2 EXERCISE   

<?php

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    
       ATTENTION FOR THE COMPATIBILITY WITH LOCALE
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */

setlocale(LC_ALL"pt-br.utf-8""pt_BR.utf-8""portuguese-brazil""ptb");

$cus_pt "Este produto tem custo de %s%1.2f por unidade.";
$cur_br 'R$';
$val_pt 5.71;
printf($cus_pt$cur_br$val_pt);

echo 
'<br><br>';

setlocale(LC_ALL"en-us""en_US""american""american english""american-english""english-american""english-us""english-usa""enu""us""usa"); 
$cus_us "This product costs %s%1.2f per unit.";
$cur_us 'U$';
$val_us 1.00;
printf($cus_us$cur_us$val_us);

?> 

 RESULT   

Este produto tem custo de R$5,71 por unidade.

This product costs U$1.00 per unit.



  3 EXERCISE   

<?php

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    
    ATTENTION FOR THE NON COMPATIBILITY WITH LOCALE
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */

setlocale(LC_ALL"pt-br.utf-8""pt_BR.utf-8""portuguese-brazil""ptb"); 

$cus_pt "This product costs %s%1.2F per unit.";
$cur_br 'R$';
$val_pt 5.71;
printf($cus_pt$cur_br$val_pt);

echo 
'<br><br>';

setlocale(LC_ALL"en-us""en_US""american""american english""american-english""english-american""english-us""english-usa""enu""us""usa");  
$cus_us "This product costs %s%1.2f per unit.";
$cur_us 'U$';
$val_us 1.00;
printf($cus_us$cur_us$val_us);

?> 

 RESULT   

This product costs R$5.71 per unit.

This product costs U$1.00 per unit.



  4 EXERCISE   

<?php

setlocale
(LC_ALL"en-us""en_US""american""american english""american-english""english-american""english-us""english-usa""enu""us""usa"); 

$str04n = <<<EOD
In PHP there are TWO types 
of variables:\n<br> 
INTERNAL: %s 
and \n<br>OF USER: %s 
EOD;

$arg4 '(predefined) ';

$arg5 '(user-defined).';

$res04n printf($str04n$arg4$arg5);

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   This function is AUTO SUFFICIENT
   
   The displayed data is made directly
   without the need for ancillary functions,
   however, if you treat it as a VARIABLE and
   use: echo or print to display it, 
   this will additionally show the 
   number of characters involved
   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */

echo '<br><br>' $res04n ' characters'

?> 

 RESULT   

In PHP there are TWO types of variables:
INTERNAL: (predefined) and
OF USER: (user-defined).

110 characters



  5 EXERCISE   

<?php

$str05 
'2021<br>is equal to<br> %o (octal)<br>and to<br> %X (hexadecimal)';

$arg6 2021;
$arg7 2021;

$res05 printf($str05$arg6$arg7);

echo 
'<br><br>' $res05 ' characters'

?> 

 RESULT   

2021
is equal to
3745 (octal)
and to
7E5 (hexadecimal)

68 characters


  6 EXERCISE   

<?php

$arrus 
= ["en-us","en_US""american""american english"
"american-english""english-american""english-us"
"english-usa""enu""us""usa"];

$arrbr = ["pt-br""pt_BR.utf-8""portuguese-brazil""ptb"];

setlocale(LC_ALL$arrus); 

$str06 '2018.99987 + 421.9876 = %f';

$arg8 2018.99987 421.9876;

$res06 printf($str06$arg8);

echo 
'<br><br>' $res06 ' characters<br><br><br>'

setlocale(LC_ALL$arrbr); 

$res06 printf($str06$arg8);

echo 
'<br><br>' $res06 ' caracteres'

?> 

 RESULT   

2018.99987 + 421.9876 = 2440.987470

35 characters


2018.99987 + 421.9876 = 2440,987470

35 caracteres


  7 EXERCISE   

<?php

/* Various input arrays for different format types */

$float_variation  = [ "%f""%-f""%+f""%7.2f"
                       
"%-7.2f""%07.2f""%-07.2f""%'#7.2f" ];
$float_numbers    = [ 01, -10.32, -0.32
                                
3.4. -3.42.54, -2.54
                                
1.2345678e99, -1.2345678e99 ];

$int_variation    = [ "%d""%-d""%+d""%7.2d""%-7.2d""%07.2d""%-07.2d""%'#7.2d" ];
$int_numbers      = [ 01, -12.7, -2.7
                               
23333333, -23333333"1234" ];

$char_variation   = [ 'a'"a"67, -6799 ];

$string_variation = [ "%5s""%-5s""%05s""%'#5s" ];
$strings          = [ NULL"abc"'aaa' ];

/* Checking warning messages */

/* Zero argument */
echo "<br><br>Output for zero argument:<br>";
try {
    
printf();
} catch (
TypeError $e) {
    echo 
$e->getMessage(), "<br>";
}

/* Number of arguments not matching 
                 as specified in format field */
echo "<br><br>Output for insufficient number of arguments:<br>";
$string "dingy%sflem%dwombat";
$nbr 5;
$name "voudras";
try {
    
printf("%d $string %s"$nbr$name);
} catch (
\ArgumentCountError $e) {
    print(
'Error found: '.$e->getMessage());
}


/* Scalar argument */
echo "<br><br>Output for scalar argument:<br>";
printf(3);

/* NULL argument */
echo "<br><br>Output for NULL as argument:<br>";
printf(NULL);


/* Float type variations */

$counter 1;
echo 
"<br><br> Output for float type.<br>";
echo 
"<br>Input Float numbers variation array is:<br>";
print_r($float_numbers);

foreach( 
$float_variation as $float_var )
{
 echo 
"<br><br>Float Iteration: $counter<br>";
 foreach( 
$float_numbers as $float_num )
 {
  echo 
"<br>";
  
printf$float_var$float_num );
 }
 
$counter++;
}


/* Integer type variations */

$counter 1;
echo 
"<br><br> Output for integer type.<br>";
echo 
"<br>Input Integer numbers variation array is:<br>";
print_r($int_numbers);

foreach( 
$int_variation as $int_var )
{
 echo 
"<br><br>Integer Iteration: $counter<br>";
 foreach( 
$int_numbers as $int_num )
 {
  echo 
"<br>";
  
printf$int_var$int_num );
 }
 
$counter++;
}


/* Binary type variations */

echo "<br><br> Output for binary type.<br>";
echo 
"<br>Input  numbers variation array is:<br>";
print_r($int_numbers);

 foreach( 
$int_numbers as $bin_num )
 {
  echo 
"<br>";
  
printf"%b"$bin_num );
 }


/* Chararter type variations */
echo "<br><br> Output for char type.<br>";
echo 
"<br>Input Characters variation array is:<br>";
print_r($char_variation);

foreach( 
$char_variation as $char )
{
 echo 
"<br>";
 
printf"%c"$char );
}

/* Scientific type variations */
echo "<br><br> Output for scientific type.<br>";
echo 
"<br>Input numbers variation array is:<br>";
print_r($int_numbers);

foreach( 
$int_numbers as $num )
{
 echo 
"<br>";
 
printf"%e"$num );
}

/* Unsigned Integer type variation */
echo "<br><br> Output for unsigned integer type.<br>";
echo 
"<br>Input Integer numbers variation array is:<br>";
print_r($int_numbers);

foreach( 
$int_numbers as $unsig_num )
{
 echo 
"<br>";
 
printf"%u"$unsig_num );
}

/* Octal type variations */
echo "<br><br> Output for octal type.<br>";
echo 
"<br>Input numbers variation array is:<br>";
print_r($int_numbers);

foreach( 
$int_numbers as $octal_num )
{
 echo 
"<br>";
 
printf"%o"$octal_num );
}

/* Hexadecimal type variations */
echo "<br><br> Output for hexadecimal type.<br>";
echo 
"<br>Input numbers variation array is:<br>";
print_r($int_numbers);

foreach( 
$int_numbers as $hexa_num )
{
 echo 
"<br>";
 
printf"%x"$hexa_num );
}

/* String type variations */
echo "<br><br> Output for string type.<br>";
echo 
"<br>Input Strings format variation array is:<br>";
print_r($string_variation);
echo 
"<br><br>Input strings variation array is:<br>";
print_r($strings);

foreach( 
$string_variation as $string_var )
{
 foreach( 
$strings as $str )
 {
  echo 
"<br>";
  
printf$string_var$str );
 }
}


/* variations of %g type */
$format_g = ["%g""%.0g""%+g""%-g""%-1.2g""%+1.2g""%G""%.0G""%+G""%-G""%-1.2G""%+1.2G" ];

echo 
"<br><br> Output for '%g' type.<br>";
echo 
"<br>Input format variation array is:<br>";
print_r($format_g);

foreach( 
$format_g as $formatg )
{
 
printf("\n$formatg",123456);
 
printf("\n$formatg",-123456);
}


/* Some more typical cases */

$tempnum 12345;
$tempstring "abcdefghjklmnpqrstuvwxyz";

echo
"<br><br> Output for '%%%.2f' as the 
                         format parameter.<br>"
;
printf("%%%.2f",1.23456789e10);

echo
"<br><br> Output for '%%' as the 
                         format parameter.<br>"
;
printf("%%",1.23456789e10);

echo
"<br><br> Output for precision 
                         value more than maximum:<br>"
;
printf("%.988f",1.23456789e10);

echo
"<br><br> Output for invalid width(-15) specifier:<br>";
try {
    
printf("%030.-15s"$tempstring);
} catch (
ValueError $e) {
    echo 
$e->getMessage();
}

echo
"<br><br> Output for '%F' as the format parameter:<br>";
printf("%F",1.23456789e10);

echo
"<br><br> Output for '%X' as the format parameter:<br>";
printf("%X",12);

echo
"<br><br> Output  with no format parameter:<br>";
printf($tempnum);

echo
"<br><br> Output for multiple format parameters:<br>";
printf("%d  %s  %d\n"$tempnum$tempstring$tempnum);

echo
"<br><br> Output for excess of mixed type arguments:<br>";
printf("%s"$tempstring$tempstring$tempstring);

echo
"<br><br> Output for string format 
                 parameter and integer type argument:<br>"
;
printf("%s"$tempnum);

echo
"<br><br> Output for integer format 
                 parameter and string type argument:<br>"
;
printf("%d"$tempstring);


?>

  8 EXERCISE   

<?php
echo "Testing printf() : 
           basic functionality - using string format.<br>"
;

// Initialise all required variables
$format "format";
$format1 "%s";
$format2 "%s %s";
$format3 "%s %s %s";
$arg1 "arg1 argument";
$arg2 "arg2 argument";
$arg3 "arg3 argument";

echo 
"<br><br>Calling printf() with no arguments:<br>";
$result printf($format);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br>Calling printf() with one arguments:<br>";
$result printf($format1$arg1);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br>Calling printf() with two arguments:<br>";
$result printf($format2$arg1$arg2);
echo 
"<br><br>";
var_dump($result);


echo 
"<br><br>Calling printf() with string three arguments:<br>";
$result printf($format3$arg1$arg2$arg3);
echo 
"<br><br>";
var_dump($result);

?>

  9 EXERCISE   

<?php

echo "Testing printf() : 
           basic functionality - using integer format.<br>"
;

// Initialise all required variables
$format "format";
$format1 "%d";
$format2 "%d %d";
$format3 "%d %d %d";
$arg1 111;
$arg2 222;
$arg3 333;

echo 
"<br><br>Calling printf() with no arguments:<br>";
$result printf($format);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br>Calling printf() with one arguments:<br>";
$result printf($format1$arg1);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br>Calling printf() with two arguments:<br>";
$result printf($format2$arg1$arg2);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br>Calling printf() with three arguments:<br>";
$result printf($format3$arg1$arg2$arg3);
echo 
"<br><br>";
var_dump($result);

?>

  10 EXERCISE   

<?php

echo " Testing printf() : 
           basic functionality - using float format.<br>"
;

// Initialise all required variables

$format "format";
$format1 "%f";
$format2 "%f %f";
$format3 "%f %f %f";

$format11 "%F";
$format22 "%F %F";
$format33 "%F %F %F";
$arg1 11.11;
$arg2 22.22;
$arg3 33.33;

echo 
"<br><br>Calling printf() 
               with no arguments:<br>"
;
$result printf($format);
echo 
"<br>";
var_dump($result);

echo 
"<br><br>Calling printf() 
                with one arguments:<br>"
;
$result printf($format1$arg1);
echo 
"<br>";
var_dump($result);
$result printf($format11$arg1);
echo 
"<br>";
var_dump($result);

echo 
"<br><br>Calling printf() 
                with two arguments:<br>"
;
$result printf($format2$arg1$arg2);
echo 
"<br>";
var_dump($result);
$result printf($format22$arg1$arg2);
echo 
"<br>";
var_dump($result);

echo 
"<br><br>Calling printf() 
               with three arguments:<br>"
;
$result printf($format3$arg1$arg2$arg3);
echo 
"<br>";
var_dump($result);
$result printf($format33$arg1$arg2$arg3);
echo 
"<br>";
var_dump($result);

?>

  11 EXERCISE   

<?php

echo "Testing printf() : 
                basic functionality - using bool format.<br>"
;

// Initialise all required variables
$format "format";
$format1 "%b";
$format2 "%b %b";
$format3 "%b %b %b";
$arg1 TRUE;
$arg2 FALSE;
$arg3 true;

echo 
"<br><br>Calling printf() with no arguments:<br>";
$result printf($format);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br>Calling printf() with one arguments:<br>";
$result printf($format1$arg1);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br>Calling printf() with two arguments:<br>";
$result printf($format2$arg1$arg2);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br>Calling printf() with three arguments:<br>";
$result printf($format3$arg1$arg2$arg3);
echo 
"<br><br>";
var_dump($result);

?>

  12 EXERCISE   

<?php

echo "Testing printf() : 
           basic functionality - using char format.<br>"
;

// Initialise all required variables
$format "format";
$format1 "%c";
$format2 "%c %c";
$format3 "%c %c %c";
$arg1 65;
$arg2 66;
$arg3 67;

echo 
"<br><br> Calling printf() with no arguments:<br>";
$result printf($format);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br> Calling printf() with one arguments:<br>";
$result printf($format1$arg1);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br> Calling printf() with two arguments:<br>";
$result printf($format2$arg1$arg2);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br> Calling printf() with three arguments:<br>";
$result printf($format3$arg1$arg2$arg3);
echo 
"<br><br>";
var_dump($result);
?>

  13 EXERCISE   

<?php

echo "Testing printf() : 
          basic functionality - using exponential format.<br>"
;

// Initialise all required variables
$format "format";
$format1 "%e";
$format2 "%E %e";
$format3 "%e %E %e";
$arg1 1000;
$arg2 2e3;
$arg3 = +3e3;

echo 
"<br><br>Calling printf() with no arguments:<br>";
$result printf($format);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br>Calling printf() with one argument:<br>";
$result printf($format1$arg1);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br>Calling printf() with two arguments:<br>";
$result printf($format2$arg1$arg2);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br>Calling printf() with three arguments:<br>";
$result printf($format3$arg1$arg2$arg3);
echo 
"<br><br>";
var_dump($result);
?>

  14 EXERCISE   

<?php

echo "Testing printf() : 
         basic functionality - using hexadecimal format.<br>"
;

// Initialise all required variables

// Initialising different format strings
$format "format";
$format1 "%x";
$format2 "%x %x";
$format3 "%x %x %x";

$format11 "%X";
$format22 "%X %X";
$format33 "%X %X %X";

$arg1 11;
$arg2 132;
$arg3 177;

echo 
"<br><br>Calling printf() with no arguments:<br>";
$result printf($format);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br>Calling printf() with one arguments:<br>";
$result printf($format1$arg1);
echo 
"<br><br>";
var_dump($result);
$result printf($format11$arg1);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br>Calling printf() with two arguments:<br>";
$result printf($format2$arg1$arg2);
echo 
"<br><br>";
var_dump($result);
$result printf($format22$arg1$arg2);
echo 
"<br><br>";
var_dump($result);

echo 
"<br><br>Calling printf() with three arguments:<br>";
$result printf($format3$arg1$arg2$arg3);
echo 
"<br><br>";
var_dump($result);
$result printf($format33$arg1$arg2$arg3);
echo 
"<br><br>";
var_dump($result);

?>

  15 EXERCISE   

<?php

echo "Testing printf() : error conditions.<br>";

// Zero arguments
echo "<br><br>Testing printf() function 
                     with Zero arguments:<br>"
;
try {
    
var_dumpprintf() );
} catch (
TypeError $e) {
    echo 
$e->getMessage(), "<br>";
}

echo 
"<br><br>Testing printf() function 
                 with less than expected 
                              number of arguments:<br>"
;
$format1 '%s';
$format2 '%s%s';
$format3 '%s%s%s';
$arg1 'one';
$arg2 'two';

echo 
"<br><br>Call printf 
                 with one argument less than expected:<br>"
;
try {
    
var_dumpprintf($format1) );
} catch (
\ArgumentCountError $e) {
    echo 
$e->getMessage(), "<br>";
}
try {
    
var_dumpprintf($format2,$arg1) );
} catch (
\ArgumentCountError $e) {
    echo 
$e->getMessage(), "<br>";
}
try {
    
var_dumpprintf($format3,$arg1,$arg2) );
} catch (
\ArgumentCountError $e) {
    echo 
$e->getMessage(), "<br>";
}

echo 
"<br><br>Call printf 
                   with two argument less than expected:<br>"
;
try {
    
var_dumpprintf($format2) );
} catch (
\ArgumentCountError $e) {
    echo 
$e->getMessage(), "<br>";
}
try {
    
var_dumpprintf($format3,$arg1) );
} catch (
\ArgumentCountError $e) {
    echo 
$e->getMessage(), "<br>";
}

echo 
"<br><br>Call printf 
                    with three argument less than expected:<br>"
;
try {
    
var_dumpprintf($format3) );
} catch (
\ArgumentCountError $e) {
    echo 
$e->getMessage(), "<br>";
}

?>

  16 EXERCISE   

<?php

setlocale
(LC_ALL"pt-br""pt_BR.utf-8""portuguese-brazil""ptb");
$f 1.25;
echo 
'<pre>';
printf("%g %G %h %H\n"$f$f$f$f);
echo 
'</pre><br>';
$f 0.00000125;
echo 
'<pre>';
printf("%g %G %h %H\n"$f$f$f$f);
echo 
'</pre>';

?>

  17 EXERCISE   

<?php

/*
* Testing printf() : with different unexpected 
* values for format argument other than the strings
*/

echo "Testing printf() : 
               with unexpected values for format argument.<br>"
;

// initialing required variables
$arg1 "second arg";
$arg2 "third arg";

//get an unset variable
$unset_var 10;
unset (
$unset_var);

// declaring class
class sample
{
  public function 
__toString() {
    return 
"Object";
  }
}

// creating a file resource
$file_handle fopen(__FILE__'r');

//array of values to iterate over
$values = array(

          
// int data
/*1*/      
0,
          
1,
          
12345,
          -
2345,

          
// float data
/*5*/      
10.5,
          -
10.5,
          
10.1234567e10,
          
10.7654321E-10,
          
.5,

          
// array data
/*10*/    
array(),
          array(
0),
          array(
1),
          array(
12),
          array(
'color' => 'red''item' => 'pen'),

          
// null data
/*15*/    
NULL,
          
null,

          
// boolean data
/*17*/    
true,
          
false,
          
TRUE,
          
FALSE,

          
// empty data
/*21*/    
"",
          
'',

          
// object data
/*23*/    
new sample(),

          
// undefined data
/*24*/    
@$undefined_var,

          
// unset data
/*25*/    
@$unset_var,

          
// resource data
/*26*/    
$file_handle
);

// loop through each element 
// of the array for format

$count 1;
foreach(
$values as $value) {
  echo 
"<br><br>Iteration: $count<br>";

  
// with default argument
  
try {
    
$result printf($value);
    echo 
"<br>";
    
var_dump($result);
  } catch (
TypeError $exception) {
    echo 
$exception->getMessage() . "<br>";
  }

  
// with two arguments
  
try {
    
$result printf($value$arg1);
    echo 
"<br>";
    
var_dump($result);
  } catch (
TypeError $exception) {
    echo 
$exception->getMessage() . "<br>";
  }

  
// with three arguments
  
try {
    
$result printf($value$arg1$arg2);
    echo 
"<br>";
    
var_dump($result);
  } catch (
TypeError $exception) {
    echo 
$exception->getMessage() . "<br>";
  }

  
$count++;
};

// close the resource
fclose($file_handle);

?>

  18 EXERCISE   

<?php

echo "Testing printf() : 
           with different types of values passed 
                                      for arg1 argument.<br>"
;

// initialing required variables
$format '%s';
$arg2 'third argument';

//get an unset variable
$unset_var 10;
unset (
$unset_var);

// declaring class
class sample
{
  public function 
__toString() {
    return 
"Object";
  }
}

// creating a file resource
$file_handle fopen(__FILE__'r');

//array of values to iterate over
$values = array(

          
// int data
/*1*/     
0,
          
1,
          
12345,
          -
2345,

          
// float data
/*5*/     
10.5,
          -
10.5,
          
10.1234567e10,
          
10.7654321E-10,
          
.5,

          
// array data
/*10*/    
array(),
          array(
0),
          array(
1),
          array(
12),
          array(
'color' => 'red''item' => 'pen'),

          
// null data
/*15*/    
NULL,
          
null,

          
// boolean data
/*17*/    
true,
          
false,
          
TRUE,
          
FALSE,

          
// empty data
/*21*/    
"",
          
'',

          
// string data
/*23*/    
"string",
          
'string',

          
// object data
/*25*/    
new sample(),

          
// undefined data
/*26*/    
@$undefined_var,

          
// unset data
/*27*/    
@$unset_var,

          
// resource data
/*28*/    
$file_handle
);

// loop through each element of the array for arg1

$count 1;
foreach(
$values as $value) {
  echo 
"<br><br>Iteration: $count<br>";

  
// with two arguments
  
$result printf($format$value);
  echo 
"<br>";
  
var_dump($result);

  
// with three arguments
  
$result printf($format$value$arg2);
  echo 
"<br>";
  
var_dump($result);

  
$count++;
};

// closing the resource
fclose($file_handle);

?>

  19 EXERCISE   

<?php

/* Attention to differences in results 
 * in PHP versions 7.4.XX and 8.0.XX.
*/

setlocale(LC_ALL'pt-PT''pt_PT');

$f 1.23456789012345678;
$fx 1.23456789012345678e100;
var_dump($f$fx);
echo 
"<br><br><br>";
printf("%.*f\n"10$f);
echo 
"<br><br>";
printf("%.*G\n"10$f);
echo 
"<br><br>";
printf("%.*g\n", -1$fx);
echo 
"<br><br>";
printf("%.*G\n", -1$fx);
echo 
"<br><br>";
printf("%.*h\n", -1$fx);
echo 
"<br><br>";
printf("%.*H\n", -1$fx);
echo 
"<br><br>";
printf("%.*s\n"3"foobar");
echo 
"<br><br><br>";
printf("%*f\n"10$f);
echo 
"<br><br>";
printf("%*G\n"10$f);
echo 
"<br><br>";
printf("%*s\n"10"foobar");
echo 
"<br><br><br>";
printf("%*.*f\n"103$f);
echo 
"<br><br>";
printf("%*.*G\n"103$f);
echo 
"<br><br>";
printf("%*.*s\n"103"foobar");
echo 
"<br><br><br>";
printf("%1$.*2\$f\n"$f10);
echo 
"<br><br>";
printf("%.*2\$f\n"$f10);
echo 
"<br><br>";
printf("%2$.*f\n"10$f);
echo 
"<br><br>";
printf("%1$*2\$f\n"$f10);
echo 
"<br><br>";
printf("%*2\$f\n"$f10);
echo 
"<br><br>";
printf("%2$*f\n"10$f);
echo 
"<br><br>";
printf("%1$*2$.*3\$f\n"$f103);
echo 
"<br><br>";
printf("%*2$.*3\$f\n"$f103);
echo 
"<br><br>";
printf("%3$*.*f\n"103$f);
echo 
"<br><br><br>";

try {
    
printf("%.*G\n""foo"1.5);
} catch (
ValueError $e) {
    echo 
$e->getMessage(), "<br>";
}

try {
    
printf("%.*G\n", -1001.5);
} catch (
ValueError $e) {
    echo 
$e->getMessage(), "<br>";
}

try {
    
printf("%.*s\n", -1"Foo");
} catch (
ValueError $e) {
    echo 
$e->getMessage(), "<br>";
}

try {
    
printf("%*G\n", -1$f);
} catch (
ValueError $e) {
    echo 
$e->getMessage(), "<br>";
}

?>