首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据最大和最小键值排列json数组?

如何根据最大和最小键值排列json数组?
EN

Stack Overflow用户
提问于 2017-01-17 15:19:31
回答 2查看 144关注 0票数 1

我有一个json数组,我需要使用PHP根据最大或最小键值重新排列它。下面是我的代码:

代码语言:javascript
运行
复制
$data=array(array("day1"=>1,"day2"=>1,"name"=>"Ram"),array("day1"=>1,"day2"=>2,"name"=>"Raj"),array("day1"=>1,"day2"=>3,"name"=>"Rahul"),array("day1"=>2,"day2"=>3,"name"=>"Rocky"));
echo json_encode($data);

它的输出如下所示。

代码语言:javascript
运行
复制
[{"day1":1,"day2":1,"name":"Ram"},{"day1":1,"day2":2,"name":"Raj"},{"day1":1,"day2":3,"name":"Rahul"},{"day1":2,"day2":3,"name":"Rocky"}]

在这里,我为每个记录中的day1 and day2设置了不同的值。我需要它将计算day1的最小值和day2的每条记录的最大值,我的预期输出应该如下所示。

预期输出:

代码语言:javascript
运行
复制
[{"day1":1,"day2":3,"name":"Ram"},{"day1":1,"day2":3,"name":"Raj"},{"day1":1,"day2":3,"name":"Rahul"},{"day1":1,"day2":3,"name":"Rocky"}]
EN

回答 2

Stack Overflow用户

发布于 2017-01-17 15:28:22

这会有帮助的-

代码语言:javascript
运行
复制
$data=array(array("day1"=>1,"day2"=>1,"name"=>"Ram"),array("day1"=>1,"day2"=>2,"name"=>"Raj"),array("day1"=>1,"day2"=>3,"name"=>"Rahul"),array("day1"=>2,"day2"=>3,"name"=>"Rocky"));
// Get all values for day1 & day2 and store them in one array
$values = array_merge(array_column($data, 'day2'), array_column($data, 'day1'));
// Assign values
$data = array_map(function($d) use($values) {
    // Assign the minimum value
    $d['day1'] = min($values);
    // assign the maximum value
    $d['day2'] = max($values);
    return $d;
}, $data);

echo json_encode($data);

输出

代码语言:javascript
运行
复制
[{"day1":1,"day2":3,"name":"Ram"},{"day1":1,"day2":3,"name":"Raj"},{"day1":1,"day2":3,"name":"Rahul"},{"day1":1,"day2":3,"name":"Rocky"}]
票数 2
EN

Stack Overflow用户

发布于 2017-01-17 15:36:20

这将有所帮助:检查

代码语言:javascript
运行
复制
    $data=array(array("day1"=>1,"day2"=>1,"name"=>"Ram"),array("day1"=>1,"day2"=>2,"name"=>"Raj"),array("day1"=>1,"day2"=>3,"name"=>"Rahul"),array("day1"=>2,"day2"=>3,"name"=>"Rocky"));
    $min = min(array_column($data, 'day1'));
    $max = max(array_column($data, 'day2'));
    $result = array_map(function($v) use($min, $max){$v['day1'] = $min; $v['day2'] = $max; return $v; }, $data);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41691105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档