好的,我有一个数组,像这样:
$my_array = array(
'hi' => array('description' => 'how are you?', 'title' => 'Hello', 'link' => 'http://mylink.com'),
'bye' => array('description' => array('Goodbye!', 'see ya'), 'title' => 'See Ya Later', 'link' => 'http://mybyelink.com'),
'not_now' => array('description' => array('I am away now!', 'gone'), 'title' => 'Away', 'link' => 'http://myawaylink.com'),
'back' => array('description' => array('I am back now!', 'back', 'present'), 'title' => 'Here', 'link' => 'http://mybacklink.com'),
);
所以我希望数组被排序,在php代码中,以某种方式,使它通过每个数组绑定的标题排序:$my_array['hi']['title']
, $my_array['bye']['title']
, $my_array['not_now']['title']
和$my_array['back']['title']
,但它必须保持数组完整,以便hi, bye, not_now和back中的所有值完全相同,所有数组(如果有的话,也是相同的)。
所以这个数组需要根据标题按ABC顺序排序,所以应该按这个顺序返回:
$my_array = array(
'not_now' => array('description' => array('I am away now!', 'gone'), 'title' => 'Away', 'link' => 'http://myawaylink.com'),
'hi' => array('description' => 'how are you?', 'title' => 'Hello', 'link' => 'http://mylink.com'),
'back' => array('description' => array('I am back now!', 'back', 'present'), 'title' => 'Here', 'link' => 'http://mybacklink.com'),
'bye' => array('description' => array('Goodbye!', 'see ya'), 'title' => 'See Ya Later', 'link' => 'http://mybyelink.com'),
);
标题按ABC顺序排列:离开,你好,在这里,再见。
我怎么能做到这一点,仍然保持完整的数组与所有的子数组在它吗?
谢谢大家:)
您希望在函数中使用strnatcmp与用户定义的排序函数一起使用sort函数。下面是您的代码示例:
function titleSort($a, $b) {
return strnatcmp($a['title'], $b['title']);
}
uasort($my_array, 'titleSort');
如果需要,您可以使用is_array对输入变量添加一些完整性检查,以确保它们是数组。