我正在使用以下代码显示JSON:
<?php
$result = array();
array_push($result,
array("id" => 1, "title" => "text 1"),
array("id" => 2, "title" => "text 2"),
array("id" => 3, "title" => "text 3"),
array("id" => 4, "title" => "text 4")
);
echo json_encode($result);
?>
我想将ID 3移到顶部。这可能吗?我该怎么办?
结果应该是这样的:
[
{
"id": 3,
"title": "text 3"
},
{
"id": 1,
"title": "text 1"
},
{
"id": 2,
"title": "text 2"
},
{
"id": 4,
"title": "text 4"
}
]
答案 0 :(得分:2)
您可以在对数组进行JSON编码之前对其进行排序。
$move_to_top = 3;
usort($result, function($a, $b) use ($move_to_top) {
if ($a['id'] == $move_to_top) return -1;
if ($b['id'] == $move_to_top) return 1;
return $a['id'] - $b['id'];
});
这确实对数组进行了排序。如果您不希望移动当前一项而只保留当前订单,则可以对其进行迭代,然后在找到所需ID时,取消设置当前键,然后将该项目附加到数组的开头。
$move_to_top = 3;
foreach($result as $key => $item) {
if ($item['id'] == $move_to_top) {
unset($result[$key]);
array_unshift($result, $item);
break;
}
}
json_encode
(将项目移到顶部之后)。
echo json_encode($result);
答案 1 :(得分:2)
array_splice
可以帮助您
System.InvalidOperationException: 'The null value cannot be assigned to a member with type System.Decimal which is a non-nullable value type.'
结果:
$out = array_splice($result, 2, 1);
array_splice($result, 0, 0, $out);