2014-09-26 68 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