对属于另一个数组的 php 数组进行排序

Sort an php array that is part of another array

我有一个这样的数组

"entry a" => [
    "type": 3,
    "id": 1,
    "content" => [
        [
            "name" => "somename a",
            "date": => "2011-08-2"
        ],
        [
            "name" => "somename b",
            "date": => "2012-04-20"
        ],
        [
            "name" => "somename c",
            "date": => "2015-01-14"
        ],
    ]
],
 "entry b" => [
    "type": 3,
    "id": 2,
    "content" => [
        [
            "name" => "someothername a",
            "date": => "2011-01-6"
        ],
        [
            "name" => "someothername b",
            "date": => "2015-12-24"
        ],
        [
            "name" => "someothername c",
            "date": => "2016-01-01"
        ],
    ]
],
...

我只想按日期对每个条目的 "content" 数组进行排序。我尝试了以下方法;

        foreach ($cfArray as $cfEntry) {
            if($cfEntry['type'] == '3' && !is_null($cfEntry['content'])) {
                $content = $cfEntry['content'];
                uasort($content, function($a, $b) {
                    $a_end = strtotime($a['date']);
                    $b_end = strtotime($b['date']);
                    return ($a_end > $b_end) ? -1 : 1;
                });
                $cfEntry['content'] = $content;
            }
        }

如果我比较排序前后的$content,它已经改变但我的$cfArray 没有改变。这是为什么?还有其他方法可以解决这个问题吗?

您的代码几乎可以正常工作,您可以使用此示例将更改的项目保存到 $newCfArray 数组来创建完全正常的代码:

$newCfArray = array();
foreach ($cfArray as $key => $cfEntry) {
    if($cfEntry['type'] == '3' && !is_null($cfEntry['content'])) {
        $content = $cfEntry['content'];
        uasort($content, function($a, $b) {
            $a_end = strtotime($a['date']);
            $b_end = strtotime($b['date']);
            return ($a_end > $b_end) ? -1 : 1;
        });
        $cfEntry['content'] = $content;
    }
    $newCfArray[$key] = $cfEntry;
}
$cfArray = $newCfArray;