Arrays PHP中带有数字和字符串值的数组排序
我的阵列:Arrays PHP中带有数字和字符串值的数组排序,arrays,sorting,Arrays,Sorting,我的阵列: $data = array( array( 'id' => 1, 'value' => 1.2 ), array( 'id' => 2, 'value' => 2.5 ), array( 'id' => 3, 'value' => 'N/A' ) );
$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']);
});
但是不行,有人能帮我吗?试试这个:
<?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
)
)