Exemplo n.º 1
0
 public function testNumberCmpOutOfOrder()
 {
     // arrange
     $a = 7;
     $b = 3;
     // act
     $result = numbercmp($a, $b);
     // assert
     $this->assertGreaterThan(0, $result, 'Expected $a to sort after $b');
 }
Exemplo n.º 2
0
 function usort_by(&$array, $sortBy)
 {
     if (is_string($sortBy)) {
         $field = $sortBy;
         $sortBy = function ($element) use($field) {
             if (is_object($element)) {
                 return $element->{$field};
             } elseif (is_array($element)) {
                 return $element[$field];
             } else {
                 return null;
             }
         };
     }
     usort($array, function ($a, $b) use($sortBy) {
         $aValue = $sortBy($a);
         $bValue = $sortBy($b);
         if (is_string($aValue) && is_string($bValue)) {
             return strcmp($aValue, $bValue);
         } elseif (is_number($aValue) && is_number($bValue)) {
             return numbercmp($aValue, $bValue);
         } elseif (is_datetime($aValue) && is_datetime($bValue)) {
             return datecmp($aValue, $bValue);
         }
     });
 }
Exemplo n.º 3
0
 function datecmp($a, $b)
 {
     return numbercmp($a->getTimestamp(), $b->getTimestamp());
 }