我正在尝试对一系列值进行排序.
数组中可能的值是'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'),
);
Run Code Online (Sandbox Code Playgroud)
我想要:
$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'),
);
Run Code Online (Sandbox Code Playgroud)
我一直在玩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);
Run Code Online (Sandbox Code Playgroud)
用于您的排序功能:
function cmp($a, $b) {
if ($a == 'neg_infinity') {
return -1
}
if ($a == 'infinity') {
return 1
}
return ($a < $b ? -1 : 1)
}
Run Code Online (Sandbox Code Playgroud)
这样的事情应该有效:
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;
}
Run Code Online (Sandbox Code Playgroud)