如何从PHP数组中获取字符串类型id的最大值与最小值
解决方案
要解决这个问题,你可以按以下步骤实现:
步骤1:提取并解析JSON数据
每个数组元素的n或0属性值是固定前缀+JSON格式的字符串,首先要剥离前缀(比如artefact[10.3]),只保留后面的JSON部分,再解析成可操作的对象/数组。
步骤2:收集所有ID并转换为数值类型
ID是以字符串形式存储的数字,直接比较字符串会出现逻辑错误(比如字符串"10"会被认为比"2"小),所以必须先转成整数再收集。
步骤3:计算最大值和最小值
用PHP内置的max()和min()函数对收集到的ID数值数组进行计算。
完整代码示例
<?php // 假设$data是你提供的目标数组 $ids = []; foreach ($data as $item) { // 提取JSON部分:定位第一个'{'的位置,截取后续内容 $jsonStr = substr($item->n, strpos($item->n, '{')); // 解析JSON为对象 $obj = json_decode($jsonStr); // 将ID转为整数并加入数组 $ids[] = (int)$obj->id; } // 计算最大和最小ID $maxId = max($ids); $minId = min($ids); // 输出结果 echo "最小ID:{$minId}\n"; echo "最大ID:{$maxId}\n"; ?>
补充说明
- 若前缀格式不确定,也可以用正则表达式匹配JSON部分,适配性更强:
preg_match('/\{.*\}/', $item->n, $matches); $jsonStr = $matches[0];
- 若JSON格式可能存在异常,可添加错误处理,比如用
json_last_error()排查解析问题。
内容的提问来源于stack exchange,提问作者Spatial Digger
相关产品推荐
相关产品推荐

