按时间戳进行数组过滤

时间:2018-11-23 11:20:15

标签: php arrays sorting

我正在尝试通过时间戳过滤数组,但是没有用。这是我的代码:

$get = array{
    "5656778": {
        "date": 1541304426,
        "text": "some text",
    },
    "567845": {
        "date": 1541304416,
        "text": "some other text",
    },
}    
function cmp($b, $a){
    $ad = strnatcmp($a['date']);
    $bd = strnatcmp($b['date']);
    return ($bd-$ad);
}

usort($get, 'cmp');

foreach ($get as $key => $value) {
// displaying results
}

我试图修复该方法,但是所有结果都相同。

我想念什么?

我们非常感谢您的帮助

1 个答案:

答案 0 :(得分:2)

我假设问题中的内容实际上是要转换为数组的完整JSON数据中的一部分。在这种情况下,此代码应为您提供所需的结果:

$json = '{
    "5656778": {
        "date": 1541304426,
        "text": "some text"
    },
    "567845": {
        "date": 1541304416,
        "text": "some other text"
    }
}';
$get = json_decode($json, true);

usort($get, function ($a, $b) { return $a['date'] - $b['date']; });
print_r($get);

输出:

Array
(
    [0] => Array
        (
            [date] => 1541304416
            [text] => some other text
        )    
    [1] => Array
        (
            [date] => 1541304426
            [text] => some text
        )    
)

Demo on 3v4l.org