Ort*_*x92 2 php mysql methods foreach function
我有一个填充了一些数据的MySQL DB字段.我在我的脚本中有一个选项可以清除该字段,因此我可以添加新的新数据,而无需附加旧的东西.
但是我使用的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();
}
Run Code Online (Sandbox Code Playgroud)
问题是我希望show_clean()只运行ONCE.这就是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();
}
}
Run Code Online (Sandbox Code Playgroud)
$ this-> option-> clean由构造函数中的post变量设置.
有没有聪明的方法可以做到这一点,还是我需要做很长的事情?
不确定这是多么"聪明",但它的一种方式似乎并不长.
在循环外部设置一个变量,表示您尚未清理,如果尚未设置,则仅调用clean.一旦你清理了第一个,时间,设置你的旗帜,这样它就不会再次清理了.
$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 {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)