2009-08-17 70 views
1

我見過的代碼我工作,執行以下操作:相當於每()爲MySQL的結果,以模仿的foreach的第一個循環()

foreach($mysql_result as $row) $site_id = $row->id;

$ mysql_result當然是一個的mysql_result,所以這的foreach相當於一段時間(和mysql_fetch_row())

有時候,結果是衆所周知的產量只有一排,但代碼仍然有一個「的foreach」,所以它給人的一個印象循環遍歷許多行。

我試過使用each(),但是對此不起作用。

我知道我可以使用mysql_fetch_row(),但代碼應該與數據庫無關,所以我不能使用數據庫特定的功能。 是否有像每個()在這種情況下工作就像foreach()的第一次迭代?

PS:有什麼事可讀性目前做的是前面的例子變成這樣:

foreach($mysql_result as $row) break; 
$site_id = $row->id;

所以這是很明顯,在foreach最多將循環一次。

回答

3

我想你想要的是這個:

foreach($mysql_result as $row) $site_id = $row->id; 

就在:

$site_id = $mysql_result[0]->id; 
-1

這是你想要的嗎?

if (1 == count($mysql_result)) 
{ 
    $row = current($mysql_result); 

    // could probably also do this unless the array isn't zero-indexed 
    // $row = $mysql_result[0]; 
} 
+0

我認爲當前的()失敗,每個以同樣的方式()一樣。你確定嗎?我會試試看。 – Petruza 2009-08-17 21:27:07

0

如果你只想要一個結果,那麼你不需要循環。

$result = mysql_query($query); 
$row = mysql_fetch_assoc($result); 
$site_id = $row['id']; 
1

PS:有什麼事 可讀性目前要做的就是把以前的 例如:

foreach($ mysql_result as $ row) break;

裹在一個功能,所以很明顯,它得到一個行(和現在分貝獨立的)

function fetch_single_row($result) 
{ 
    foreach($mysql_result as $row) break; 
    return $row; 
} 

那麼你的代碼看起來像

$row = fetch_single_row($mysql_result); 
$site_id = $row->id; 

現在你贏了」不必懷疑所有奇怪的foreach(..)break;聲明全部代碼。

0

你烏爾德使用DO循環

$i =0 
do { 
    $site_id = $mysql_result[$i++]->id; 
} while ($i <= 0); 
相關問題