2014-05-22 59 views
0
數和字符串值

我的數組:數組排序在PHP

$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

試試這個:

<?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功能。