2012-12-18 33 views
0

可能重复:
Sorting an associative array in PHP排序按字母顺序JSON数组在PHP

我有一个Jsion阵列看起来像这样:

{ 
    devices: [ 
     { 
      name: " Server 00 ", 
      ip: " 172.20.10.10 ", 
      status: 0 
     }, 
     { 
      name: " Server 10 ", 
      ip: " 172.20.10.12 ", 
      status: 0 
     }, 
     { 
      name: " Server 01 ", 
      ip: " 172.20.10.13 ", 
      status: 1 
     }, 
     { 
      name: " Server 11 ", 
      ip: " 172.20.10.15 ", 
      status: 0 
     } 
    ] 
} 

我使用PHP将其转换为html表格,但我希望它们按字母顺序排列。这里是我的PHP代码:

private static function toHtml($output, $rmkeyworkxen = false) { 
    $return = ''; 

    $devices = json_decode($output, true)['devices']; 

    foreach($devices as $device) { 
     if(startsWith(trim($device['name']), "Xen")&&$rmkeyworkxen == true) { 
      $return .= ''; 
     } 
     else { 
      if($device['status'] == 0) { 
       $state = "Online"; 
       $return .= "<tr class=\"success\"><td>"; 
      } 
      else { 
       $state = "Offline"; 
       $return .= "<tr class=\"error\"><td>"; 
      } 

      $return .= $device['name']; 
      $return .= '</td><td>'; 
      $return .= $device['ip']; 
      $return .= '</td><td>'; 
      $return .= $state; 
      $return .= '</td></tr>'; 
     } 
    } 
    return $return; 
} 

我怎么能通过设备的名称排列数组?

回答

5
usort($devices,function($a,$b) {return strnatcasecmp($a['name'],$b['name']);}); 

文档:usort()strnatcasecmp()