1--TEST-- 2Test strtr() function : usage variations - unexpected inputs for 'from' argument 3--FILE-- 4<?php 5/* Prototype : string strtr(string $str, string $from[, string $to]); 6 string strtr(string $str, array $replace_pairs); 7 * Description: Translates characters in str using given translation tables 8 * Source code: ext/standard/string.c 9*/ 10 11/* Test strtr() function: with unexpected inputs for 'from' 12 * and expected type for 'str' & 'to' arguments 13*/ 14 15echo "*** Testing strtr() function: with unexpected inputs for 'from' ***\n"; 16 17//get an unset variable 18$unset_var = 'string_val'; 19unset($unset_var); 20 21//defining a class 22class sample { 23 public function __toString() { 24 return "sample object"; 25 } 26} 27 28//getting the resource 29$file_handle = fopen(__FILE__, "r"); 30 31//defining 'str' argument 32$str = "012atm"; 33 34// array of values for 'from' 35$from_arr = array ( 36 37 // integer values 38/*1*/ 0, 39 1, 40 -2, 41 42 // float values 43/*4*/ 10.5, 44 -20.5, 45 10.1234567e10, 46 47 // array values 48/*7*/ array(), 49 array(0), 50 array(1, 2), 51 52 // boolean values 53/*10*/ true, 54 false, 55 TRUE, 56 FALSE, 57 58 // null vlaues 59/*14*/ NULL, 60 null, 61 62 // objects 63/*16*/ new sample(), 64 65 // resource 66/*17*/ $file_handle, 67 68 // undefined variable 69/*18*/ @$undefined_var, 70 71 // unset variable 72/*19*/ @$unset_var 73); 74 75//defining 'to' argument 76$to = "atm012"; 77 78// loop through with each element of the $from array to test strtr() function 79$count = 1; 80for($index = 0; $index < count($from_arr); $index++) { 81 echo "-- Iteration $count --\n"; 82 $from = $from_arr[$index]; 83 var_dump( strtr($str, $from, $to) ); 84 $count ++; 85} 86 87fclose($file_handle); //closing the file handle 88?> 89===DONE=== 90--EXPECTF-- 91*** Testing strtr() function: with unexpected inputs for 'from' *** 92-- Iteration 1 -- 93string(6) "a12atm" 94-- Iteration 2 -- 95string(6) "0a2atm" 96-- Iteration 3 -- 97string(6) "01tatm" 98-- Iteration 4 -- 99string(6) "ta2atm" 100-- Iteration 5 -- 101string(6) "m1tatm" 102-- Iteration 6 -- 103string(6) "tm0atm" 104-- Iteration 7 -- 105 106Notice: Array to string conversion in %s on line %d 107string(6) "0120tm" 108-- Iteration 8 -- 109 110Notice: Array to string conversion in %s on line %d 111string(6) "0120tm" 112-- Iteration 9 -- 113 114Notice: Array to string conversion in %s on line %d 115string(6) "0120tm" 116-- Iteration 10 -- 117string(6) "0a2atm" 118-- Iteration 11 -- 119string(6) "012atm" 120-- Iteration 12 -- 121string(6) "0a2atm" 122-- Iteration 13 -- 123string(6) "012atm" 124-- Iteration 14 -- 125string(6) "012atm" 126-- Iteration 15 -- 127string(6) "012atm" 128-- Iteration 16 -- 129string(6) "012ttm" 130-- Iteration 17 -- 131string(6) "012atm" 132-- Iteration 18 -- 133string(6) "012atm" 134-- Iteration 19 -- 135string(6) "012atm" 136===DONE=== 137