2015-02-28 2 views
0

В php мне нужно, чтобы 1 выполнялся до запуска в то время как 2. Хотя 1 создает массив на основе таблицы 1. Хотя 2 удаляет данные из таблицы 2 основанный на том, что НЕ находится в массиве с момента времени.В php мне нужно выполнить инструкцию while, прежде чем запускать второй оператор while

Моя проблема в том, что пока 2 работает до завершения создаваемого массива, в то время как 1. Я мог бы сделать это, используя задержку времени, но это действительно делает не гарантируйте, что массив завершен, плюс он также требует ненужной задержки.

Я думаю, что мне нужно сделать что-то вроде интервала в javascript, который, я думаю, мог бы сделать. Однако для этого мне нужен некоторый флаг, указывающий, что пока 1 завершен. В принципе, моя проблема заключается в том, что мне нужен этот флаг, но я не знаю, как сделать флаг, который является истинным только тогда, когда 1 завершен.

Вот код, я работаю над:

$ data01 = mysql_query ("SELECT * FROM crxcrops") или умереть (mysql_error());

в то время как ($ r01 = mysql_fetch_array ($ data01)) {

$cropsarray[] = $r01['cropsid_crp']; 

}

// Необходимо сделать паузу здесь, а не продолжить до $ cropsarray не будет завершена. Эта пауза, похоже, не происходит. Цель состоит в том, чтобы удалить строки из crxplugs (ниже), у которых в crxcrops не найдено cropid (см. Выше). Я не получаю согласованных результатов, что заставило меня поверить, что здесь нет паузы. Однако, может быть, у меня есть ошибка? Может быть, я не могу запустить DELETE, пока все еще в SELECT?

$ data00 = mysql_query ("SELECT * FROM crxplugs") или умереть (mysql_error());

в то время как ($ r00 = mysql_fetch_array ($ data00)) {

$key = array_search($r00['cropsidplg'], $cropsarray); 

    if($key==false){ 

     mysql_query("DELETE FROM crxplugs WHERE cropsidplg=$ r00['cropsidplg']") or die(mysql_error()); 

    } 

}

+4

Пожалуйста, сообщите код, который вы написали, и объясните, что вы хотите сделать с этим кодом. – bestprogrammerintheworld

+2

Uhm, PHP работает сверху донизу, поэтому, если у вас есть две петли друг за другом, вторая не будет работать до тех пор, пока первая не будет выполнена. – JimL

+0

Это не имеет никакого смысла, поскольку @JimL получает, PHP в природе, поэтому все блокируется, т.е. ваш второй цикл не будет работать до тех пор, пока ваш первый цикл не завершится ... – prodigitalson

ответ

1

Я думаю, что все, что вам нужно, использует флаг, но попытаться обеспечить некоторый код, трудно написать что-то мы не уверены.

$flag=false; 

//first while 
while (1==1){ 

//do first job 
/* 
if (first job has finished) 
$flag=true; 
*/ 


//second while 
if(flag){ 
while(/*second while statement*/){ 
//do second job 
} 
break; 
} 



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