我只是問自己什麼更快:我有一個for循環,我必須檢查一個特定的表列對我的循環變量。什麼是更快?在循環中觸發查詢或循環通過數組?
現在我有兩個選擇:在循環中,我爲每個迭代啓動一個查詢並檢查我的結果。第二種方法是獲取我需要的所有行,並在我的for循環中運行foreach循環,並檢查我的期望字段和循環變量之間是否有有效的匹配。
這有點難以解釋,但我只是讓代碼說話。我不在循環中使用實際代碼,而是通過插圖方式虛構函數調用。
選項1:查詢每次迭代的數據庫。
<?php
// Option 1:
for($i = 0; $i < 5; $i++)
{
$query_result = query_database_where_field_equals($i);
if($query_result)
{
echo "Here is something";
}
else
{
echo "Here is nothing";
}
}
// Option 2:
$results = query_database_and_get_all_results();
for($i = 0; $i < 5; $i++)
{
foreach($results AS $result)
{
if($result['desired_field'] == $i)
{
echo "Here is something";
}
else
{
echo "Here is nothing";
}
}
}
?>
這兩種方式的工作,但我敢肯定,這是一個糟糕的做法是觸發一個循環內的查詢在視高性能的點。
但是在for循環中使用foreach循環對我來說似乎也有點奇怪。
那麼這樣做的首選方式是什麼?
編輯 - 添加信息
我有一個for循環,需要多次運行。金額是靜態的(例如5),並且不依賴於數據庫中的任何記錄。每次迭代都代表一個位置。
我有一個數據庫表,它可能存儲有關位置包含的信息。
例子:
positions (id, position)
所以的示例記錄可能是: 位置(1,2)
這意味着,我有2位我想在我的循環來基本上什麼東西是爲了檢查我是否得到了該職位的記錄。預期的輸出爲:
Here is nothing
Here is nothing
Here is something
Here is nothing
Here is nothing
這麼簡單但非常有效!這是一個「感覺很好」的解決方案。正如我所說的那麼簡單,但我無法想出這個! :) 謝謝 – thpl