PHP 如何从数组边界的 1 值中以 ABC 顺序对数组进行排序



好的,我有一个数组,像这样:

$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对输入变量添加一些完整性检查,以确保它们是数组。

相关内容

  • 没有找到相关文章

最新更新