2012-12-18 32 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()