Annotation of embedaddon/php/ext/standard/tests/array/usort_variation3.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Test 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: 
                     14: echo "*** Testing usort() : usage variation ***\n";
                     15: 
                     16: function 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
                     33: simple
                     34: EOT2;
                     35:   
                     36: // multiline heredoc string
                     37: $multiline_heredoc = <<<EOT3
                     38: multiline heredoc with 123
                     39: and speci@! ch@r..\ncheck\talso
                     40: EOT3;
                     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: 
                     73: var_dump( usort($array_arg, 'cmp_function') );
                     74: echo "\n-- Sorted array after usort() function call --\n";
                     75: var_dump($array_arg);
                     76: ?>
                     77: ===DONE===
                     78: --EXPECTF--
                     79: *** Testing usort() : usage variation ***
                     80: bool(true)
                     81: 
                     82: -- Sorted array after usort() function call --
                     83: array(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===

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>