问题描述:

I have the following data that I've built (simplified for example) and am having trouble sorting the data by [start_date] in PHP - any help for be very much appreciated thank you as I'm pulling my hair out with usort etc!!

[1338] => Array

(

[0] => stdClass Object

(

[id] => 193

[data] => 1338

[num] => 2

)

[start_date] => 2014-09-13

)

[618] => Array

(

[0] => stdClass Object

(

[id] => 193

[data] => 1338

[num] => 2

)

[1] => stdClass Object

(

[id] => 193

[data] => 1338

[num] => 2

)

[start_date] => 2014-06-20

)

[349] => Array

(

[0] => stdClass Object

(

[id] => 887

[data] => 223

[num] => 2

)

[1] => stdClass Object

(

[id] => 887

[data] => 224

[num] => 2

)

[start_date] => 2014-08-20

)

网友答案:

try this

function cmp($a, $b){

    $a = strtotime($a['start_date']);
    $b = strtotime($b['start_date']);

    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

usort($array, "cmp");
网友答案:

usort is the way to go:

usort($array, function($a,$b){
    return strtotime($a["start_date"]) - strtotime($b["start_date"]);
});
网友答案:

Shakti Patel's answer basically worked (thank you sir!) - but I needed to retain the original indexes (I should have made this more clearer in my original question) - so here is the example where I use uasort() which maintains the indexes:

function cmp($a, $b){

$a = strtotime($a['start_date']);
$b = strtotime($b['start_date']);

if ($a == $b) {
    return 0;
}
    return ($a < $b) ? -1 : 1;
}

uasort($array, "cmp");
相关阅读:
Top