首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JSON & PHP中对虚数进行排序

在JSON & PHP中对虚数进行排序
EN

Stack Overflow用户
提问于 2022-11-10 09:37:41
回答 2查看 44关注 0票数 0

在我使用PHP的项目中,JSON是我保存的数据。每个数据的序列号为1.1、1.1.1、1.1.2、1.1.3、.、1.1.10。

当我排序时,我注意到1.1.10出现在1.1.1之后,而1.1.9还没有出现。

因为它按字母排序。我不知道该怎么处理!

编辑:添加了示例JSON数据。

代码语言:javascript
复制
{
  "2": {
    "sirano": "1",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "124": {
    "sirano": "1.1.1",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "125": {
    "sirano": "1.1.2",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "126": {
    "sirano": "1.1.3",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "127": {
    "sirano": "1.1.4",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "128": {
    "sirano": "1.1.5",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "129": {
    "sirano": "1.1.6",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "130": {
    "sirano": "1.1.7",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "131": {
    "sirano": "1.1.8",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "132": {
    "sirano": "1.1.9",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "133": {
    "sirano": "1.1.10",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "134": {
    "sirano": "1.2",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "135": {
    "sirano": "1.3.1",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "136": {
    "sirano": "1.3.2",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "137": {
    "sirano": "1.4.1",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  }
}

代码语言:javascript
复制
$data = json_decode($proje->JSONData, true); 
function order($a, $b) 
{
    return $a['sirano'] - $b['sirano'];
}
uasort($data, 'order');

我试过这样做,但结果很清楚!帮帮我,我快疯了!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-10 10:38:26

您需要在排序函数内部使用version_compare函数:

代码语言:javascript
复制
<?php

$json = json_decode('{
  "2": {
    "sirano": "1",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "124": {
    "sirano": "1.1.1",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "125": {
    "sirano": "1.1.2",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "126": {
    "sirano": "1.1.3",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "127": {
    "sirano": "1.1.4",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "128": {
    "sirano": "1.1.5",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "129": {
    "sirano": "1.1.6",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "130": {
    "sirano": "1.1.7",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "131": {
    "sirano": "1.1.8",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "132": {
    "sirano": "1.1.9",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "133": {
    "sirano": "1.1.10",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "134": {
    "sirano": "1.2",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "135": {
    "sirano": "1.3.1",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "136": {
    "sirano": "1.3.2",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  },
  "137": {
    "sirano": "1.4.1",
    "personal": "4",
    "tarihler": {
      "baslangic": "2022-11-10",
      "bitis": "2022-11-17"
    },
    "ilerleme": "0"
  }
}',true);

function order($a, $b) 
{
    return version_compare($a['sirano'], $b['sirano']);
}
usort($json, 'order');

echo'<pre>';
print_r($json);

对于降序变更位置,$b abd $a变量:

代码语言:javascript
复制
return version_compare( $b['sirano'],$a['sirano']);
票数 0
EN

Stack Overflow用户

发布于 2022-11-10 11:26:52

代码语言:javascript
复制
uasort($array, fn($a,$b) => strnatcmp($a['sirano'],$b['sirano']));

乌萨特保留原始键,斯特纳茨使用“自然顺序”算法对两个字符串进行比较。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74386901

复制
相关文章

相似问题

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