基本的に、次のような foreach ループがあります。
foreach($_POST['id'] as $key => $id) {
$qty = $_POST['qty'][$key];
$bin_location = $_POST['bin_location'][$key];
$pdi_required = $_POST['pdi_required'.$key][0];
$pdi_completed = $_POST['pdi_completed'][$key];
$serial_no = $_POST['serial_no'][$key];
$movement_by = $_POST['movement_by'][$key];
$date_moving = $_POST['date_of_movement'][$key];
$special_instructions = $_POST['special_instructions_admin'][$key];
$status = strtolower($_POST['status'][$key]);
$sql_update = "UPDATE products SET status='$status' WHERE job_id='$id'";
$this->db->query($sql_update);
}
if ($status == 'rejected') {
$sql_job_update = "UPDATE jobs SET status='rejected' WHERE job_id='$id'";
} elseif ($status =='pending' || $status =='returning') {
$sql_job_update = "UPDATE jobs SET status='pending' WHERE job_id='$id'";
} else {
$sql_job_update = "UPDATE jobs SET status='approved'";
}
しかし、私が最も興味を持っているのは最後の部分です ( if ($status == whatever
)。foreach から可能な限り低い値を取得するにはどうすればよいですか?
これは、2 つのテーブルjobs
があり、完了したジョブのテーブルがproducts
あり、ジョブ内で要求された製品であるためです。何らかの理由で製品が拒否された場合、ジョブ全体が失敗であるため、ジョブのステータスは拒否されます。拒否されておらず、保留中の場合は、保留中のままにします。すべてのフィールドが承認された場合は、ジョブ ステータスを承認済みに設定します。
本当に必要なのは、foreach ループ内のいずれかのオカレンス内で特定のステータスが true かどうかを取得し、それが true の場合は、ステータスをその値に設定することだけです。