PHP如何使用range()生成含多段范围、额外值及剔除指定值的数组
多区间+额外值合并实现
你可以直接用array_merge()函数合并多个range()生成的区间数组,以及包成数组格式的单独数值即可,示例代码如下:
$i = array_merge( range(101, 167), range(201, 245), [255] // 单独数值要包裹为数组才能参与数组合并 );
这个方法支持任意数量的区间、任意数量的单独值追加,后续新增区间/固定值直接在array_merge的参数列表里追加对应内容即可。
指定区间剔除指定数值的实现
不需要拆分多个区间生成再合并,你可以先生成完整区间,再用array_diff()剔除不需要的数值即可,代码更简洁易维护:
// 生成全区间后剔除指定值 $arr = array_diff(range(301, 351), [329, 340]); // 如果需要连续的索引键,可追加array_values重置键名 $arr = array_values(array_diff(range(301, 351), [329, 340]));
只有当需要剔除的数值非常多、或者区间跨度极大的场景,才推荐用拆分区间的方式优化性能,你当前的场景用过滤的方式更合适。
内容的提问来源于stack exchange,提问作者DenisZ
相关产品推荐
相关产品推荐

