public function testNumberCmpOutOfOrder() { // arrange $a = 7; $b = 3; // act $result = numbercmp($a, $b); // assert $this->assertGreaterThan(0, $result, 'Expected $a to sort after $b'); }
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); } }); }
function datecmp($a, $b) { return numbercmp($a->getTimestamp(), $b->getTimestamp()); }