2014-09-26 70 views
1

我想通過下面的'地址'對數組$ result進行排序。我試過usort()但它不起作用。在PHP中排序數組(OpenCart地址)

感謝所有幫助

  foreach ($results as $result) { 
      $this->data['addresses'][] = array(
        'address_id' => $result['address_id'], 
        'address' => $result['firstname'] . ' ' . $result['lastname'] . ', ' . $result['address_1'] . ', ' . $result['city'] . ', ' . (($result['zone']) ? $result['zone'] . ', ' : FALSE) . (($result['postcode']) ? $r$ 
        'href'  => HTTPS_SERVER . 'index.php?route=account/address/' . $type . '&address_id=' . $result['address_id'] 
      ); 
    } 
//The following does not work 
usort($result, 'address'); 
+0

你想按字母順序排序嗎?此外,'usort()'的第二個參數應該是閉包或函數的名稱。 – 2014-09-26 08:04:20

回答

1

爲了usort工作,你需要定義一個自定義函數:

usort($result, function($a, $b){ 
       //^anonymous function 
    return strcmp($a['address'], $b['address']); 
}); 
+0

謝謝,幽靈。我通過使用你的函數來處理它,然後對$ this-> data ['addresses']進行排序,而不是$ result。 – user2298034 2014-09-26 09:35:15

+0

@ user2298034確定男人沒有概率,很高興這有幫助 – Ghost 2014-09-26 10:53:27

0

usort需要一個函數作爲第二個參數排序數據,「地址」似乎並不是一個函數 你嘗試對$ result進行排序,但你用數據填充$ this-> data ['addresses'] 我會用數據填充$ this-> data ['addresses']並使用這個東西你想用作鍵,然後用ksort對它進行排序,例如:

foreach ($results as $result) { 
     $this->data['addresses'][$result['address_id']] = array(
      'address_id' => $result['address_id'], 
      'address' => $result['firstname'] . ' ' . $result['lastname'] . ', ' . $result['address_1'] . ', ' . $result['city'] . ', ' . (($result['zone']) ? $result['zone'] . ', ' : FALSE) . (($result['postcode']) ? $r$ 
      'href'  => HTTPS_SERVER . 'index.php?route=account/address/' . $type . '&address_id=' . $result['address_id'] 
     ); 
    } 
ksort($this->data['addresses']); 
+1

非常感謝解釋,需要對$ this-> data ['addresses']進行排序,而不是$ result。 – user2298034 2014-09-26 09:33:52