コード例 #1
0
ファイル: DictionaryTest.php プロジェクト: dpolac/dictionary
 public function testSortBy_Called_OriginalDictionaryModified()
 {
     $d = Dictionary::fromArray([1, 3, 4, 0]);
     $originalValues = $d->values();
     $d->sortBy('values', 'asc');
     $this->assertNotEquals($originalValues, $d->values());
 }
コード例 #2
0
 public static function sortBy($array, $callback, $direction = 'ASC')
 {
     if (!is_callable($callback)) {
         throw new \Twig_Error_Runtime(sprintf('Second argument of "sort_by" must be callable, but is "%s".', gettype($callback)));
     }
     if (!is_array($array) && !$array instanceof \Traversable) {
         throw new \Twig_Error_Runtime(sprintf('First argument of "sort_by" must be array or Traversable, but is "%s".', gettype($array)));
     }
     if ($array instanceof \Traversable) {
         if ($array instanceof Dictionary) {
             $array = $array->getCopy();
         } else {
             $array = Dictionary::fromArray($array);
         }
         return $array->sortBy($callback, $direction);
     } else {
         $direction = strtoupper($direction) === 'DESC' ? SORT_DESC : SORT_ASC;
         $order = self::map($array, $callback);
         array_multisort($order, $direction, SORT_REGULAR, $array);
         return $array;
     }
 }