我的阵列:
$data = array(
array(
'id' => 1,
'value' => 1.2
),
array(
'id' => 2,
'value' => 2.5
),
array(
'id' => 3,
'value' => 'N/A'
)
);
我希望排序值编号始终位于值字符串之前(2.5 - > 1.2 - >' N / A'):
我的代码:
usort($data, function($a, $b) {
if ($a['value'] == 'N/A') {
return $b['value'];
} elseif ($b['value'] == 'N/A') {
return $a['value'];
}
return strcmp($b['value'], $a['value']);
});
但没有工作,有人可以帮助我吗?
答案 0 :(得分:0)
试试这个:
<?php
$data = array(
array(
'id' => 1,
'value' => 1.2
),
array(
'id' => 2,
'value' => 2.5
),
array(
'id' => 3,
'value' => 'N/A'
)
);
$value= array();
foreach ($data as $k => $sub_arr) {
$value[$k] = $sub_arr['value'];
}
array_multisort($value, SORT_DESC, SORT_NUMERIC, $data);
print_r($data);
?>
输出:
$ php -f test.php
Array
(
[0] => Array
(
[id] => 2
[value] => 2.5
)
[1] => Array
(
[id] => 1
[value] => 1.2
)
[2] => Array
(
[id] => 3
[value] => N/A
)
)
这里我们使用array_multisort函数。