1--TEST-- 2Test usort() function : usage variations - diff. array values 3--FILE-- 4<?php 5/* Prototype : bool usort(array $array_arg, string $cmp_function) 6 * Description: Sort an array by values using a user-defined comparison function 7 * Source code: ext/standard/array.c 8 */ 9 10/* 11 * Pass an array with different data types as keys to usort() to test how it is re-ordered 12 */ 13 14echo "*** Testing usort() : usage variation ***\n"; 15 16function cmp_function($value1, $value2) 17{ 18 if($value1 == $value2) { 19 return 0; 20 } 21 else if($value1 > $value2) { 22 return -1; 23 } 24 else { 25 return 1; 26 } 27} 28 29// different heredoc strings 30 31// single line heredoc string 32$simple_heredoc = <<<EOT2 33simple 34EOT2; 35 36// multiline heredoc string 37$multiline_heredoc = <<<EOT3 38multiline heredoc with 123 39and speci@! ch@r..\ncheck\talso 40EOT3; 41 42$array_arg = array( 43 // numeric keys 44 -2 => 9, 45 8.9 => 8, 46 012 => 7, 47 0x34 => 6, 48 49 // string keys 50 'key' => 5, //single quoted key 51 "two" => 4, //double quoted key 52 " " => 0, // space as key 53 54 // bool keys 55 TRUE => 100, 56 FALSE => 25, 57 58 // null keys 59 NULL => 35, 60 61 // binary key 62 "a".chr(0)."b" => 45, 63 b"binary" => 30, 64 65 //heredoc keys 66 $simple_heredoc => 75, 67 $multiline_heredoc => 200, 68 69 // default key 70 1, 71); 72 73var_dump( usort($array_arg, 'cmp_function') ); 74echo "\n-- Sorted array after usort() function call --\n"; 75var_dump($array_arg); 76?> 77===DONE=== 78--EXPECTF-- 79*** Testing usort() : usage variation *** 80bool(true) 81 82-- Sorted array after usort() function call -- 83array(15) { 84 [0]=> 85 int(200) 86 [1]=> 87 int(100) 88 [2]=> 89 int(75) 90 [3]=> 91 int(45) 92 [4]=> 93 int(35) 94 [5]=> 95 int(30) 96 [6]=> 97 int(25) 98 [7]=> 99 int(9) 100 [8]=> 101 int(8) 102 [9]=> 103 int(7) 104 [10]=> 105 int(6) 106 [11]=> 107 int(5) 108 [12]=> 109 int(4) 110 [13]=> 111 int(1) 112 [14]=> 113 int(0) 114} 115===DONE=== 116