php - 在 foreach 循环中只使用一次函数

标签 php mysql function methods foreach

我有一个用一些数据填充的 MySQL 数据库字段。我的脚本中有一个选项可以清除该字段,这样我就可以向其中添加新数据,而无需附加到旧数据。

但是我使用的是 foreach 循环,看起来像这样:

            foreach ($model->filenames as $key => $model->filename) {
            $model->get_title($model->filename);
            $model->get_showTitle($model->titles);
            $model->get_number($model->titles);
            $model->get_host($model->urls[$key]);
            $model->source_title($model->titles);
            $model->get_season();
            if ($model->show_exist_batch()) {
                $model->show_clean(); //the method in question
                $model->show_update();
            } else {
                $model->show_add();
                $model->twitter();
            }

问题是我希望 show_clean() 只运行一次。 这是 show_clean() 的样子:

    public function show_clean() {
    if ($this->options->clean) {
        $query = "UPDATE jos_k2_items SET extra_fields = '', extra_fields_search = '' WHERE id = " . $this->item->id . "";
        $this->db->prepare($query);
        $this->db->query();
    }
}

$this->option->clean 由构造函数中的 post 变量设置。

有什么聪明的方法可以做到这一点,还是我需要长期这样做?

最佳答案

不确定这有多“聪明”,但它是一种似乎不长的方法。

在你的循环之外设置一个变量,表明你还没有清理,并且只有在它还没有被设置时才调用清理。第一次清洁后,设置您的标志,这样它就不会再次清洁。

$cleaned = false;
foreach ($model->filenames as $key => $model->filename) {
    // ...
    if ($model->show_exist_batch()) {
        if (!$cleaned) {
            $model->show_clean();
            $cleaned = true;
        }
        $model->show_update();
    } else {
        // ...
    }
}

关于php - 在 foreach 循环中只使用一次函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9558904/

相关文章:

php - 我无法使用 PHP 获取 mysqli 查询的结果(从 mysql_result 转换)

javascript - JS 'arguments' 对象如何转换为数组

C++ 将二维数组传递给函数

php - Twitter Oauth 状态/在 codeigniter 中显示返回错误

php - MySQL 目录树中的唯一文件名

php - 如何检索18 :30:00 in php之后的记录

Excel自带函数: Compile error: Sub or Function not defined

php - 如果产品价格高于 Woocommerce 中的特定金额,请在产品价格前添加文本

php - Laravel - 从关系查询数据透视表中的列值

php - UTF-8贯穿始终