基于属性值php按字母顺序排序对象数组

z31licg0  于 2023-01-12  发布在  PHP
关注(0)|答案(2)|浏览(138)

我正在努力按标题键将对象数组按字母顺序排序。得到未定义"title"的错误。
我想从这个开始:

My Array
(
    [0] => Array
        (
            [area] => TACT
            [pages] => Array
                (
                    [0] => Array
                        (
                            [id] => 1484
                            [title] => Registry
                        )

                    [1] => Array
                        (
                            [id] => 1385
                            [title] => Education

收件人:

My Array
(
    [0] => Array
        (
            [area] => TACT
            [pages] => Array
                (
                    [0] => Array
                        (
                            [id] => 1385
                            [title] => Education
                        )

                    [1] => Array
                        (
                            [id] => 1484
                            [title] => Registry

已尝试:

function sort_alpha_title($a, $b) {
    return strnatcmp($a['title'], $b['title']);
}

usort($myArray, 'sort_alpha_title');
nkoocmlb

nkoocmlb1#

您应该使用

function sort_alpha_title($a, $b) {
  return strnatcmp($a['title'], $b['title']);
}

usort($myArray[0]['pages'], 'sort_alpha_title');

因为title属性是pages属性的子属性。

xxe27gdn

xxe27gdn2#

$myArray = array(
    array(
        'area' => 'TACT',
        'pages' => array(
            array(
                'id' => 1484,
                'title' => 'Registry'
            ),
            array(
                'id' => 1385,
                'title' => 'Education'
            )
        )
    )
);

function sort_alpha_title($a, $b)
{
    return strnatcmp($a["title"], $b["title"]);
}

usort($myArray[0]['pages'], 'sort_alpha_title');
var_dump($myArray);

汤姆哈克写道:“我为这个双重的答案感到抱歉,但由于我的声誉,我不能发表评论。”
谢谢!这工作.但只为我的对象在数组之一.对不起的描述应该说.我尝试把一个for each循环,但它不工作.这里是我尝试:foreach($myArray作为$a){ usort($a ['页面'],'排序字母标题');}
你不需要foreach循环(在你的注解的末尾),因为它已经在一个调用中“循环”了。
致上最诚挚的问候

相关问题