php中的排序数组(OpenCart地址)
我正在尝试按下面的“地址”对数组$result进行排序。我试过usort(),但不起作用 谢谢你的帮助php中的排序数组(OpenCart地址),php,arrays,sorting,Php,Arrays,Sorting,我正在尝试按下面的“地址”对数组$result进行排序。我试过usort(),但不起作用 谢谢你的帮助 foreach ($results as $result) { $this->data['addresses'][] = array( 'address_id' => $result['address_id'], 'address' => $r
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');
要使usort工作,您需要定义一个自定义函数:
usort($result, function($a, $b){
// ^ anonymous function
return strcmp($a['address'], $b['address']);
});
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']);
你想按字母顺序排列吗?另外,
usort()
的第二个参数应该是闭包或函数名。非常感谢您解释排序$this->data['addresses',而不是$result所需的内容。谢谢,Ghost。我通过使用您的函数,将$this->data['addresses']而不是$result排序,使其正常工作。