2013-08-23 3 views
-1

В принципе у меня есть цикл Еогеасп так:Если переменная верно в Еогеасп цикла

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). Как получить LOWEST возможное значение из foreach?

Это потому, что у меня есть две таблицы, jobs имеет таблицу заданий, которые были выполнены, и products - это продукты, которые запрашиваются в задании. Если продукт по какой-либо причине отклоняется, вся работа является неудачей, поэтому работа должна иметь статус отклонения. Если он не отклонен и находится в ожидании, попросите его в ожидании. Если все поля приняты, то установите статус задания на прием.

Все, что мне действительно нужно, чтобы получить, если определенный статус был истинным в ЛЮБОЙ из вхождений в цикле foreach, и если это правда, тогда установите статус на это значение.

ответ

1

Keep след, если работа является отказом со второй переменной

$jobStatus = 0; 
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]); 

    //If any of the statuses are rejected then set 
    //the job as failed, otherwise it will stay as FALSE 
    if($status == "rejected") { 
     $jobStatus = 1; 
    } else if(($status == "pending" || $status == "returning") && $jobStatus != 1) { 
     $jobStatus = 2; 
    } 

    $sql_update = "UPDATE products SET status='$status' WHERE job_id='$id'"; 

    $this->db->query($sql_update); 
} 
if ($jobStatus == 1) { 
     $sql_job_update = "UPDATE jobs SET status='rejected' WHERE job_id='$id'"; 
} elseif ($jobStatus == 2){ 
     $sql_job_update = "UPDATE jobs SET status='pending' WHERE job_id='$id'"; 
} else { 
     $sql_job_update = "UPDATE jobs SET status='approved'"; 
} 
+0

Это делает совершенное чувство спасибо! Я позову вас в качестве принятого ответа через 5 минут, когда это позволит мне. – Albzi

+1

@BeatAlex повторил мой вопрос, чтобы включить ожидающие и возвращающие статусы, прежде чем они не учли эти –

+0

Еще раз спасибо за вашу помощь. Просмотрите его. – Albzi

1

Используйте отдельную переменную, для которой вы устанавливаете значение false перед циклом. Внутри цикла установите для него значение true, если у вас есть определенный статус.

Редактировать: Или, поскольку вам кажется, что у вас есть более двух возможных значений состояния, которые вам нужно учитывать, сначала установите его «одобренным» и используйте функцию сравнения, которая сообщает вам, какой из двух значений статуса ниже. Затем в цикле используйте эту функцию, чтобы установить глобальное состояние на минимум самого себя и текущий итерационный цикл цикла.

Смежные вопросы