首页 > 解决方案 > 如何在php中使用json获取数组的前10个值

问题描述

这是我的 JSON 文件的示例。

{"Variable":"Hello","Variable1":20}, {"Variable":"Hi","Variable1":30},
{"Variable":"How","Variable1":40}, {"Variable":"Who","Variable1":50},
{"Variable":"Where","Variable1":60}, {"Variable":"This","Variable1":100},
{"Variable":"Pork","Variable1":10}, {"Variable":"Creep","Variable1":90},
{"Variable":"Mega Creeps","Variable1":80}, {"Variable":"LOL","Variable1":0},
{"Variable":"ROFL","Variable1":0}, {"Variable":"LMAO","Variable1":0},
{"Variable":"POP","Variable1":0}, {"Variable":"LOVE","Variable1":0},
{"Variable":"PICK","Variable1":0}, {"Variable":"WHIZ","Variable1":0},
{"Variable":"BORED","Variable1":0}, {"Variable":"KILLAH","Variable1":0},
{"Variable":"LOLLING","Variable1":0}, {"Variable":"HALOO  HALOO","Variable1":0}

我怎样才能从变量 1 的最高数字到最少的前 10 名?但是会以相同的格式传递 JSON 文件。

标签: phpjson

解决方案


PHP 将需要使用数组,因此请使用 .将 JSON 转换为 PHP 数组json_decode()。然后,您可以使用 .x 获取数组中的第一个值array_slice($array, 0, 10);

usort()与 spaceshipoperator 一起使用,您可以对对象的属性进行<=>排序。Variable1

$json = '[{"Variable":"Hello","Variable1":20}, {"Variable":"Hi","Variable1":30},
            {"Variable":"How","Variable1":40}, {"Variable":"Who","Variable1":50},
            {"Variable":"Where","Variable1":60}, {"Variable":"This","Variable1":100},
            {"Variable":"Pork","Variable1":10}, {"Variable":"Creep","Variable1":90},
            {"Variable":"Mega Creeps","Variable1":80}, {"Variable":"LOL","Variable1":0},
            {"Variable":"ROFL","Variable1":0}, {"Variable":"LMAO","Variable1":0},
            {"Variable":"POP","Variable1":0}, {"Variable":"LOVE","Variable1":0},
            {"Variable":"PICK","Variable1":0}, {"Variable":"WHIZ","Variable1":0},
            {"Variable":"BORED","Variable1":0}, {"Variable":"KILLAH","Variable1":0},
            {"Variable":"LOLLING","Variable1":0}, {"Variable":"HALOO  HALOO","Variable1":0}]';

// Get the JSON to a PHP array
$array = json_decode($json);

// Sort the array
usort($array, function($a, $b) {
    return $b->Variable1 <=> $a->Variable1;
});

// Slice it, getting the first 10 elements
$parts = array_slice($array, 0, 10);

// Encode it back to JSON
echo json_encode($parts);

推荐阅读