首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从foreach循环创建逐块数组

从foreach循环创建逐块数组
EN

Stack Overflow用户
提问于 2019-03-21 04:50:39
回答 1查看 108关注 0票数 0

嗨,我正在尝试打印多个数组与选定的块e.x。2/3但我没有得到确切的结果。我需要些帮助。

这是我的节目

代码语言:javascript
复制
  <?php
        $process_block = 2;// this is the block 
        $args = array(
        0=> 16083,
        1=> 16090);
        $user_id_start = $args[0];
        $user_id_end = $args[1];

        $end_page = ($user_id_end - $user_id_start)/$process_block ;

        if ($end_page > floor($end_page)){
            $end_page = floor($end_page)+1;
        }

        for($i=1; $i<=$end_page; $i++){
            if($i==$end_page){
                $id_from = ($user_id_start + ($i-1) * $process_block + 1);
                $id_to = $user_id_end;
            }elseif($i==1){
                $id_from = $user_id_start;
                $id_to = $user_id_start + $i * $process_block;
            }else{
                $id_from = ($user_id_start + ($i-1) * $process_block + 1);
                $id_to = $user_id_start + $i * $process_block;
            }
            $param['id_from'] = isset($id_from) ? $id_from : '';
             $param['id_to'] = isset($id_to) ? $id_to : '';
            print_r($param);
        }
        ?>

它正在产生的产出:

代码语言:javascript
复制
 Array
    (
        [id_from] => 16083
        [id_to] => 16085
    )
    Array
    (
        [id_from] => 16086
        [id_to] => 16087
    )
    Array
    (
        [id_from] => 16088
        [id_to] => 16089
    )
    Array
    (
        [id_from] => 16090
        [id_to] => 16090
    )

我期望的数组应该是这样的。两个数字之间的差

代码语言:javascript
复制
  Array
(
    [id_from] => 16083
    [id_to] => 16085
)
Array
(
    [id_from] => 16086
    [id_to] => 16088
)
Array
(
    [id_from] => 16089
    [id_to] => 16090
)

小提琴

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-21 06:05:22

我想我可以在一段时间内把这件事编出来。但这可能是版本..。4?我觉得应该有一个更简单的解决方案,但我肯定找不到。它也应该处理范围大小的变化。

代码语言:javascript
复制
   <?php
            $process_block = 3;// this is the block 
            $args = array(
            0=> 16083,
            1=> 16090);
            $user_id_start = $args[0];
            $user_id_end = $args[1];

            $diff = $user_id_end - $user_id_start;
            $pages = ceil(($user_id_end - $user_id_start) / $process_block);

            for($i=0; $i<=$pages; $i++){
                if (($user_id_start+$i*$process_block)>$user_id_end)break;
                echo $i.'--'.($user_id_start+$i*$process_block).':::';
                $param['id_from'] = $i*$process_block+$user_id_start;
                $page_end = ($i+1) * $process_block+$user_id_start-1;
                $param['id_to'] = $page_end>$user_id_end ? $user_id_end : $page_end;
                print_r($param);
            }
            ?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55273964

复制
相关文章

相似问题

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