Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的排序数组(OpenCart地址)_Php_Arrays_Sorting - Fatal编程技术网

php中的排序数组(OpenCart地址)

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

我正在尝试按下面的“地址”对数组$result进行排序。我试过usort(),但不起作用

谢谢你的帮助

            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排序,使其正常工作。