亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

不能一次修改一次而沒有奇怪的錯誤

不能一次修改一次而沒有奇怪的錯誤

PHP
慕婉清6462132 2021-11-26 16:27:50
我有空閑時間,任何給定的員工現在都從他們的日歷中提取到一個多維數組中,其中每個 [i][] 是一對日期,表示開始時間 [i][0] 和結束時間 [ i][1] 的空閑時間塊。我需要把它分成塊的開始時間和結束時間之間的 20 分鐘間隔,并以該格式返回所有時間?,F在我只是不斷地重復修改同一個對象,但是為了正確的迭代次數,它讓我發瘋......希望你們能幫忙。我已經嘗試了我的 C++ 知識庫提供的所有內容,但我猜 php 使用對象作為參考,我找不到解決方法。$test = array_chunk($times, 2);$i = 0;$end_test = count($times)/2;$free_slots = array();$interval = '+20 minutes';array_push($free_slots, $test[0][0]);for($i=0;$i<$end_test;$i++){    $test1 = clone $test[$i][0];    $test2 = clone $test[$i][1];    while($test1<=$test2){        $test1->modify($interval);        array_push($free_slots, $test1);    }}所以在我把日期配對成對聯并運行我第一次粘貼的代碼是正確的之后,它就變得混亂了:08:00:00.000000",10:20:00.000000", 10:20:00.000000", 10:20:00.000000", 10:20:00.000000", 10:20:00.000000", 10:20:00.000000", 10:20:00.000000", 12:20:00.000000", 12:20:00.000000", 12:20:00.000000",  12:20:00.000000", 16:20:00.000000", etc...并且為空閑塊存儲了開始和結束時間的日期時間對象數組如下所示:[0][0]="2019-08-14 08:00:00.000000"[0][1]="2019-08-14 10:00:00.000000"[1][0]="2019-08-14 11:00:00.000000"[1][1]="2019-08-14 12:00:00.000000"[2][0]="2019-08-14 13:00:00.000000"[2][1]="2019-08-14 16:00:00.000000"[3][0]="2019-08-14 17:00:00.000000"[3][1]="2019-08-14 19:00:00.000000"
查看完整描述

2 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

這對我有用:


  //split into start and end points

        array_push($times, $last);

        $test = array_chunk($times, 2);

        $free_slots = array();

        $interval = '+20 minutes';

        $end_test = count($times)/2;

        //split into 'x' min intervals

        for($i=0; $i<$end_test; $i++){

            array_push($free_slots, $test[$i][0]);

            $mod = clone $test[$i][0];

            while($mod < $test[$i][1]){

                $m = clone $mod->modify($interval);

                array_push($free_slots, $m);

                if($m != $test[$i][1]){

                    array_push($free_slots, $m);

                }

            }

        }


查看完整回答
反對 回復 2021-11-26
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

您$test1每次都需要通過內部循環進行克隆。否則,您只是在適當的位置修改它并推送對相同對象的引用。


但是,在分配$test1and時不需要克隆原始日期$test2。你永遠不會修改$test2,所以它不需要是一個克隆。并且$test1在克隆它之后,您在進入循環之前不會進行修改。


for($i=0;$i<$end_test;$i++){

    $test1 = $test[$i][0];

    $test2 = $test[$i][1];

    while($test1<=$test2){

        $test1 = clone $test1;

        $test1->modify($interval);

        array_push($free_slots, $test1);

    }

}


查看完整回答
反對 回復 2021-11-26
  • 2 回答
  • 0 關注
  • 155 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號