您可以使用array_multisort(PHP 4,PHP 5)和array_map(PHP 4> = 4.0.6,PHP 5)
array_multisort(array_map(function($_){return $_->id;},$array["photos"]), SORT_DESC, $array["photos"]);
如果你有PHP 5> = 5.5。 0然后使用array_column,这里json_encode和json_decode用于转换stdClass
到array
,所以我个人更喜欢使用array_map的第一个解决方案。
array_multisort(array_column(json_decode(json_encode($array["photos"]), true),"id"), SORT_DESC, $array["photos"]);
测试
[[email protected] tmp]$ cat test.php
<?php
$array = array("photos" => array((object)array("id" => 14,"name" => "image1.jpg"),(object)array("id"=>24,"name"=>"image2.gif")));
print_r($array);
array_multisort(array_map(function($_){return $_->id;},$array["photos"]), SORT_DESC, $array["photos"]);
print_r($array);
?>
输出
[[email protected] tmp]$ php test.php
Array
(
[photos] => Array
(
[0] => stdClass Object
(
[id] => 14
[name] => image1.jpg
)
[1] => stdClass Object
(
[id] => 24
[name] => image2.gif
)
)
)
Array
(
[photos] => Array
(
[0] => stdClass Object
(
[id] => 24
[name] => image2.gif
)
[1] => stdClass Object
(
[id] => 14
[name] => image1.jpg
)
)
)
如果您有一个id => 30,该怎么办? –
到目前为止您尝试过的是什么? –
什么都不做......返回原始数组 – user889349