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
        )

)