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

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

從 PHP 中的回調函數中跳出循環

從 PHP 中的回調函數中跳出循環

PHP
大話西游666 2021-09-18 13:57:54
對于一個項目,我正在運行大量數據吞吐量,需要對其進行分塊以進行處理。此過程針對不同的用戶運行多次。所有這些都運行良好。有時,處理需要拋出停止錯誤以優雅地中斷腳本(即:不使用die()而是記錄錯誤)并繼續處理下一個用戶的數據。這是我的腳本的一個非常簡化的版本。我知道這可以在這種簡單的模式下重新排列以完全刪除回調函數,但實際的腳本要求它像這樣設置。<?php$user_data = array(    'User 1' => array(        array(            1,2,3,4,5,6,7,8,9,        ),        array(            10,11,12,13,14,15,16,17,18,        ),    ),    'User 2' => array(        array(            1,2,3,4,5,6,7,8,9,10        ),        array(            11,12,13,14,15,16,17,18,19,20        ),    ),);foreach($user_data as $data_chunks){    foreach($data_chunks as $data_set){        foreach($data_set as $data){            myFunction($data, function($returned_data, $stop){                if($stop){                    //log error                    break 2;                }                print $returned_data." ";            });        }    }}function myFunction($data, callable $f){    $stop = false;    if($data>5){        $stop = true;    }    $data_to_return = $data*2;    $f($data_to_return,$stop);}?>PHP拋出一個致命錯誤致命錯誤:無法打破/繼續 2 個級別
查看完整描述

1 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

您能否讓 myFunction 返回一個值來指示循環是否應該停止?


foreach($user_data as $data_chunks){

    foreach($data_chunks as $data_set){

        foreach($data_set as $data){

            // V-- Collect return value below

            $returned_stop = myFunction($data, function($returned_data, $stop){

                if($stop){

                    //log error

                }

                print $returned_data." ";

            });

            if ($returned_stop) { // <- Check to stop here

              break 2;

            }

        }

    }

}


function myFunction($data, callable $f){

    $stop = false;

    if($data>5){

        $stop = true;

    }

    $data_to_return = $data*2;

    $f($data_to_return,$stop);

    return($stop); // <- Return here

}


查看完整回答
反對 回復 2021-09-18
  • 1 回答
  • 0 關注
  • 183 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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