Нужно ли проверять, есть ли элементы в массиве / списке или нет перед циклом? - PullRequest
0 голосов
/ 06 января 2012

Два примера:

Python

my_list = []
if my_list:
    for item in my_list: ...
# or just
for item in my_list

PHP

$result = mysqli_query($db, "...");
if (mysqli_num_rows($result)) {
    while (mysqli_fetch_array($result)) {}
}
// or just
while(mysqli_fetch_array($result)) {}

Есть ли какая-либо разница, если предположить, что я не знаю, уведомлять ли пользователя о списке или mysqlрезультат будет пустым, если появится сообщение «У вас нет писем в почтовом ящике!»например.

Ответы [ 2 ]

0 голосов
/ 06 января 2012

Для конструкции стиля foreach, в которой используются итераторы, предварительная проверка бесполезна, а в некоторых случаях может фактически привести к выполнению дорогостоящего вычисления дважды.Сами итераторы должны проверять наличие данных, чтобы выполнять свою работу, поэтому добавление дополнительной проверки не добавляет ценности.Добавление таких проверок просто делает ваш код более трудным для чтения, поэтому вы должны просто пропустить его.

0 голосов
/ 06 января 2012

Я думаю, что в этом случае это вопрос предпочтений.Тем не менее, было бы более разумно выполнить

if (mysqli_num_rows($result)) {
while (mysqli_fetch_array($result)) {}
}

. В этом случае, в зависимости от того, сколько строк вы вернете, вы можете делать другие вещи, а не просто проверять их один раз.Но опять же, это предпочтение, и если вы знаете, что никогда не будете проверять это снова, это сделает ваш код чище, чтобы сделать это вторым способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...