截取符合条件的数组

Hx_Moon_ 2015-10-09 04:38:55

$arr = Array
(
6 => Array
(
id=> 358
level=> 6
)
4=> Array
(
id => 354
level => 4
)
5 => Array
(
id => 353
level => 5
)
)

有上面这样一个数组按键的顺序来来截取合适的数组
如果key的排序为6的在前面 如上列 key排序为 6,4,5就只取
$arr = Array
(
6 => Array
(
id=> 358
level=> 6
)
}
如果数组排序为5,4,6 就只取5,6两个
$arr = Array
(
5 => Array
(
id => 353
level => 5
)
6 => Array
(
id=> 358
level=> 6
)
)
如果4在前面排序为4,5,6就都取,
$arr = Array
(
4=> Array
(
id => 354
level => 4
)
5 => Array
(
id => 353
level => 5
)
6 => Array
(
id=> 358
level=> 6
)
)
以上如果有4,5,6,7,8,9多个的话改如何优化呢?
...全文
229 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2015-10-09
  • 打赏
  • 举报
回复
那可以考虑开列所有可能的取值情况 看看能否符合 array_intersect_key 的取数规则
Hx_Moon_ 2015-10-09
  • 打赏
  • 举报
回复
引用 2 楼 jam00 的回复:
看了下,你这个唯一的规则就是,按照第一条数据的key,往上取值 5,4,6 第一个是5 ,取比5 大的(包含5),就是 5,6 4,5,6 第一个是4 ,取比4 大的(包含4),就是 4,5,6 那你在循环的时候,记录第一条数据的key值,每次都判断key是否大于第一个值,大于就记录 这样你就不需要管他,是7,8,9还是更多的数据
也不安全是比第一个大,如果是4,6,5的话就只取4,6了,好像是没什么规律
果酱很好吃 2015-10-09
  • 打赏
  • 举报
回复
看了下,你这个唯一的规则就是,按照第一条数据的key,往上取值 5,4,6 第一个是5 ,取比5 大的(包含5),就是 5,6 4,5,6 第一个是4 ,取比4 大的(包含4),就是 4,5,6 那你在循环的时候,记录第一条数据的key值,每次都判断key是否大于第一个值,大于就记录 这样你就不需要管他,是7,8,9还是更多的数据
xuzuning 2015-10-09
  • 打赏
  • 举报
回复
排序为 6,4,5就只取 6(可认为取第一个或最后一个) 排序为5,4,6 就只取5,6两个(这又是取两端了) 排序为4,5,6就都取(规则又变了) 像你这样多变的规则,是无法写程序的 你也没有给出代码,优化更无从说起了

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧