Обычная сортировка PHP

Я пытаюсь сортировать массив значений.

Возможные значения в массиве: «neg_infinity», … {real numbers}, .., 'infinity'

<?php $a = array( array('column' => 3), array('column' => -1), array('column' => 1), array('column' => .1), array('column' => 2), array('column' => 'infinity'), array('column' => 'neg_infinity'), array('column' => 'infinity'), ); 

Я хочу:

  $a = array( array('column' => 'neg_infinity'), array('column' => -1), array('column' => .1), array('column' => 1), array('column' => 2), array('column' => 3), array('column' => 'infinity'), array('column' => 'infinity'), ); 

Я играл с uasort .

У кого-нибудь есть решение его проблемы?


ИСПЫТАТЕЛЬНЫЙ ВОДИТЕЛЬ

 <?php function cmp($a, $b) { if ($a == $b) { return 0; } if ($a == 'neg_infinity') { return -1; } if ($a == 'infinity') { return 1; } return ($a < $b) ? -1 : 1; } $a = array('a' => 'infinity', 'b' => 8, 'c' => -1,'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4, 'd' => 'neg_infinity'); uasort($a, 'cmp'); var_dump($a); 

Ты хитрый ублюдок! Я дам вам плюс один, потому что мне потребовалось 20 минут, чтобы получить массив массивов.

 function cmp($a, $b) { if ($a['column'] == 'neg_infinity') { return -1; } if ($a['column'] == 'infinity') { return 1; } if ($b['column'] == 'neg_infinity') { return 1; } if ($b['column'] == 'infinity') { return -1; } if ($a['column'] == $b['column']) { return 0; } return ($a['column'] < $b['column']) ? -1 : 1; } 

он протестирован: http://codepad.org/13GuICbH

IdeOne слишком мейнстрим, я знаю.

Используйте это для вашей функции сортировки:

 function cmp($a, $b) { if ($a == 'neg_infinity') { return -1 } if ($a == 'infinity') { return 1 } return ($a < $b ? -1 : 1) } 

Что-то вроде этого должно работать:

 function cmp($a, $b) { if ($a == $b) { return 0; } if ($a == 'neg_infinity') { return -1; } if ($a == 'infinity') { return 1; } return ($a < $b) ? -1 : 1; }