проверить неопределенное количество логических для оператора if - PullRequest
1 голос
/ 28 августа 2011

У меня есть оператор for, который запускает несколько запросов mysql, но они не всегда будут одинаковыми по количеству запросов:

for($i=0;$i<count($phones);$i++){
    $results[$i] = mysql_query("[ACTUAL MYSQL QUERY]");
}

Как видите, я поместил результат в массив и хочу убедиться, что все запросы были выполнены успешно, используя оператор if. Как бы я это сделал, я думал eval(), но это не кажется надежным.

Ответы [ 2 ]

1 голос
/ 28 августа 2011

Вы можете использовать array_filter, чтобы проверить весь список результатов $ сразу, потому что mysql_query вернет false для неудачных запросов.

if (count($results) == count(array_filter($results))) {
    // all succeeded
}

(я считаю,однако вы можете столкнуться с проблемами, если будете держать слишком много открытых дескрипторов одновременных запросов, они потребляют некоторую память. Поэтому, возможно, вам лучше сделать немедленный mysql_fetch_assoc в вашем цикле, или просто оставить логическое значение, а затем освободить дескрипторы результата.)

0 голосов
/ 28 августа 2011

Перед циклом for объявите логическую переменную со значением true.Затем, когда вы выполните цикл, если любое из значений будет ложным, установите для переменной значение false.Все запросы были успешными, если булева переменная все еще имеет значение true после цикла.

...