PHP如何设置数组的当前值?

时间:2017-10-03 02:46:08

标签: php arrays codeigniter

我在这个项目中使用codeigniter;

在我的脚本开头有这个查询,它检查已完成的步骤并将其设置为数组$completed_steps

public function checkSteps()
    {
        $completed_steps = $this->prefModel->checkStepstbl();

        $this->getPref($completed_steps);
    }

所以示例结果就像;

Array
(
    [01] => Array
        (
            [cat_id] => 15
            [offset] => 4951
        )

    [02] => Array
        (
            [cat_id] => 15
            [offset] => 4251
        )

    [03] => Array
        (
            [cat_id] => 15
            [offset] => 4001
        )

    [04] => Array
        (
            [cat_id] => 15
            [offset] => 4951
        )
)

这是我获得县的职责;

public function getPref($completed_steps)
{
    $prefectures = $this->prefModel->getList();

    foreach ( $prefectures as $prefecture ) {
        $prefectureId = $prefecture["id"];
        $batch_count = 0;
        $max_batch = 10;
        $this->getInd($prefectureId, $completed_steps,$batch_count,$max_batch);
    }
}

$ prefectures有;

$prefectures = array(array("id"=>"01","name"=>"北海道"),array("id"=>"02","name"=>"青森県"),array("id"=>"03","name"=>"岩手県"),array("id"=>"04","name"=>"宮城県"),array("id"=>"05","name"=>"秋田県"),array("id"=>"06","name"=>"山形県"),array("id"=>"07","name"=>"福島県"),array("id"=>"08","name"=>"茨城県"),array("id"=>"09","name"=>"栃木県"),array("id"=>"10","name"=>"群馬県"),array("id"=>"11","name"=>"埼玉県"),array("id"=>"12","name"=>"千葉県"),array("id"=>"13","name"=>"東京都"),array("id"=>"14","name"=>"神奈川県"),array("id"=>"15","name"=>"新潟県"),array("id"=>"16","name"=>"富山県"),array("id"=>"17","name"=>"石川県"),array("id"=>"18","name"=>"福井県"),array("id"=>"19","name"=>"山梨県"),array("id"=>"20","name"=>"長野県"),array("id"=>"21","name"=>"岐阜県"),array("id"=>"22","name"=>"静岡県"),array("id"=>"23","name"=>"愛知県"),array("id"=>"24","name"=>"三重県"),array("id"=>"25","name"=>"滋賀県"),array("id"=>"26","name"=>"京都府"),array("id"=>"27","name"=>"大阪府"),array("id"=>"28","name"=>"兵庫県"),array("id"=>"29","name"=>"奈良県"),array("id"=>"30","name"=>"和歌山県"),array("id"=>"31","name"=>"鳥取県"),array("id"=>"32","name"=>"島根県"),array("id"=>"33","name"=>"岡山県"),array("id"=>"34","name"=>"広島県"),array("id"=>"35","name"=>"山口県"),array("id"=>"36","name"=>"徳島県"),array("id"=>"37","name"=>"香川県"),array("id"=>"38","name"=>"愛媛県"),array("id"=>"39","name"=>"高知県"),array("id"=>"40","name"=>"福岡県"),array("id"=>"41","name"=>"佐賀県"),array("id"=>"42","name"=>"長崎県"),array("id"=>"43","name"=>"熊本県"),array("id"=>"44","name"=>"大分県"),array("id"=>"45","name"=>"宮崎県"),array("id"=>"46","name"=>"鹿児島県"),array("id"=>"47","name"=>"沖縄県"));
在获得行业时,这就是功能;

public function getInd($prefectureId,$completed_steps,$batch_count,$max_batch) 
{
    $industries = $this->indModel->getList();

    foreach ( $industries as $industry ) {
        $industryId = $industry["id"];
        $this->companiesCount($prefectureId,$industryId,$completed_steps,$batch_count,$max_batch);
    }

}

$ industries会给;

$industries=array(array("id"=>"1","name"=>"グルメ"),array("id"=>"2","name"=>"住まい"),array("id"=>"3","name"=>"医療・健康・介護"),array("id"=>"4","name"=>"美容・ファッション"),array("id"=>"5","name"=>"暮らし"),array("id"=>"6","name"=>"ショッピング"),array("id"=>"7","name"=>"ペット"),array("id"=>"8","name"=>"旅行宿泊"),array("id"=>"9","name"=>"ビジネス"),array("id"=>"10","name"=>"教育・習い事"),array("id"=>"11","name"=>"趣味"),array("id"=>"12","name"=>"公共機関・団体"),array("id"=>"13","name"=>"レジャー・スポーツ"),array("id"=>"14","name"=>"冠婚葬祭・イベント"),array("id"=>"15","name"=>"自動車・バイク"));

和我的companiesCount函数;

public function companiesCount($prefectureId,$industryId, $completed_steps, $batch_count,$max_batch)
{
    $loop_flg = true;
    $offset = 1;
    $limit  = 50;

    while ($loop_flg) {

        if ($completed_steps != null) {

            if ((array_key_exists($prefectureId, $completed_steps)) && ($completed_steps[$prefectureId]["cat_id"] == $industryId) && $completed_steps[$prefectureId]["offset"] == $offset) {
                continue;
            }
        }

        if($batch_count >= $max_batch){
            sleep(75);
            $last_offset = $this->lastOffset($prefectureId,$industryId);

            $batch_count = $this->batchCount();

            if($last_offset == ($offset - $limit)) {
                if(!empty($batch_count)) {
                    $result = $this->indModel->getprocessId();
                }

                if(!empty($result)) {
                    if(!($this->PsExists($result->pid))) {
                        $pid = $this->startCompany($result->prefecture_id,$result->industry_id,$result->offset);

                        $batch_count++;
                        $this->compModel->updatePid($result->prefecture_id,$result->industry_id,$pid,$result->offset);
                    }
                }
            } else {
                return $loop_flg = false;
            }
        } else {
            $pid = $this->startCompany($prefectureId,$industryId,$offset);

            $this->compModel->saveStepflg($prefectureId,$industryId,$pid,$offset);

            $batch_count++;

            $offset += 50;
        }
    }
}

我想要做的是从$completed_steps给出的数据中跳过数组。这样它就可以从其他数组的剩余部分开始。

此功能位于此代码中;

if ((array_key_exists($prefectureId, $completed_steps)) && ($completed_steps[$prefectureId]["cat_id"] == $industryId) && $completed_steps[$prefectureId]["offset"] == $offset) {
        continue;
}

但我无法以某种方式做到这一点,真的需要帮助。

目前的结果是周边$ prefectureId再次从01开始,$ industryId也从1开始,$ offset也将从1开始。

预期结果,基于给定的$ completed_steps;

我希望$ prefectureId设置为05. $ industryId从1开始(因为最大行业是15),偏移到开始1(因为通常偏移最大值是4951)。

0 个答案:

没有答案