2012-01-06 40 views
0

兩個例子:我是否需要在循環前檢查數組/列表中是否有元素?

的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結果是通過提示信息空比如「你的信箱裏沒有字母!」例如。

回答

0

我認爲在這種情況下,這是一個偏好問題。不過,這會更有意義做

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

在這種情況下,這取決於你有多少行回來後,你可以做其他的事情,而不是隻檢查一次。但是,再次,它是一種偏好,如果你知道你永遠不會再檢查它,它會讓你的代碼更清潔,以第二種方式去做。

0

對於使用迭代器的foreach樣式構造,預先檢查沒有任何好處,在某些情況下可能實際上導致執行兩次昂貴的計算。迭代器本身必須檢查數據的存在才能執行其工作,因此添加額外的檢查不會增加任何值。添加這樣的檢查只會讓你的代碼更難讀,所以你應該忽略它。

相關問題