我有一个数组:
[photos] => Array
(
[0] => stdClass Object
(
[id] => 14
[name] => image1.jpg
)
[1] => stdClass Object
(
[id] => 24
[name] => image2.gif
)
)
我想将ID = 24的元素移到数组的顶部(第一个)。
例如:
function mysort(24) {
...
}
得到输出:
[photos] => Array
(
[1] => stdClass Object
(
[id] => 24
[name] => image2.gif
)
[0] => stdClass Object
(
[id] => 14
[name] => image1.jpg
)
)
答案 0 :(得分:1)
非常简单。未经测试但应该工作。我假设您只想将一个元素移到顶部。
function mysort($array, $putOnTopId) {
$returnArray = array();
foreach ($array as $item) {
if ($item->id == $putOnTopId) {
array_unshift($returnArray, $item); // Put on top
} else {
array_push($returnArray, $item); // Put on bottom
}
}
return $returnArray;
}
答案 1 :(得分:0)
我希望这对你有用。
function mysort(placedTOFirst)
{
$tempArray = array();
$sortedarray = array()
foreach($photosArray as $key=>$val)
{
if($val->id == placedTOFirst)
{
$sortedarray[] = $val;
}
else
{
$tempArray[] = $val;
}
}
$sortedarray = array_merge($sortedarray,$tempArray);
return $sortedarray;
}
答案 2 :(得分:0)
我明白你想要什么,但你展示的输出并没有改变任何东西。 array [0]仍然包含id:14,而array [1]仍然包含id:24 ...
如果你想将数组[1]的内容放到数组[0]并自动将数组[0]的内容翻译成数组[1],你可以查看这个链接谁显示了一些可以帮助你的PHP函数按预期对数组进行排序。 http://www.w3schools.com/php/php_ref_array.asp
答案 3 :(得分:0)
您可以使用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"]);
<强>测试强>
[akshay@localhost 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);
?>
<强>输出强>
[akshay@localhost 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
)
)
)
答案 4 :(得分:0)
function mysort($id)
{
$array = array(
'photos' => array(
'1' => array(
'id' => 24,
'name' => 'image2.gif'
),
'0' => array(
'id' => 14,
'name' => 'image1.jpg'
),
'2' => array(
'id' => 4,
'name' => 'image2.gif'
),
'3' => array(
'id' => 34,
'name' => 'image1.jpg'
),
'4' => array(
'id' => 44,
'name' => 'image2.gif'
),
'5' => array(
'id' => 54,
'name' => 'image1.jpg'
)
)
);
foreach ($array as $key => $value) {
foreach ($value as $k => $v) {
if ($v['id'] === $id) {
$temp = $array[$key][$k];
unset($array[$key][$k]);
array_unshift($array[$key], $temp);
}
}
}
echo '<pre>';
print_r($array);
}
mysort(54);
答案 5 :(得分:0)
不是使用任何函数,而是简单地使用PHP的内置函数uasort
作为
uasort($array['photos'], function($a,$b){
return $b->id - $a->id;
});