首页 新闻 搜索 专区 学院

请问下这种代码有没有更简便的写法?

0
悬赏园豆:20 [待解决问题]
$list = array();
foreach ($arr as $key => $value) { // $arr为很大的索引数组
  array_push($list, $value);
  if($key == 0) continue;
  if($key%1000 == 0){
    doSth($list);
    $list = array();
  }
}
doSth($list);

感觉每次都要写两遍doSth很蠢,而且还要判断key0的情况

我忘记了的主页 我忘记了 | 菜鸟二级 | 园豆:214
提问于:2019-10-28 09:54
< >
分享
所有回答(1)
0
$list = array();
foreach ($arr as $key => $value) { // $arr为很大的索引数组
  if($key%1000 != 0){
  array_push($list, $value); } } if (!empty($list)) { doSth($list); }


如果还想简化就用函数:array_filter
悟行 | 园豆:12429 (专家六级) | 2019-10-29 14:07

没大看懂你这个,既没有判断$key%1000 == 0的情况,也没有doSth对每1000循环的$list进行处理

支持(0) 反对(0) 我忘记了 | 园豆:214 (菜鸟二级) | 2019-10-30 15:15

@我忘记了: 你的语句是跳过每次$key 为0的时候,并记录当前循环的键值对;

在   $key%1000 ==0 的时候执行;

我的语句是在   $key%1000!=0 就记录当前的键值对,都记录完后,最后一次执行;

你的语句是每次遇到    $key%1000 ==0 就执行一次,我的是一次记录,一次执行;

支持(0) 反对(0) 悟行 | 园豆:12429 (专家六级) | 2019-10-30 16:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册