2009-08-17 12 views
1

私は私が働いているコードは、以下で見てきた:同等の()、()

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

の$ mysql_resultは、Aコースのうち、 mysql_resultので、このforeachのしばらくに相当する(は、mysql_fetch_row())

時々、結果は1行のみ生じることが知られているが、があるという印象を与えそうコードがまだ「のforeach」を有します多くの行をループします。

each()を使ってみましたが、これはうまくいきません。

私はmysql_fetch_row()を使うことができると知っていますが、コードはDBに依存しないので、DB固有の関数を使用することはできません。 foreach()の最初の繰り返しと同じように、each()のようなものがありますか?

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

0

結果が1つだけの場合は、ループする必要はありません。

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

PS:私は 読みやすくするために、現在、何をすべきかは、以前の を回しています例:

foreach($行としての$ mysql_result) 休憩;関数の中で、それが1行を取得します(まだデシベル独立している)ことは明らかですので、

ラップ

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

次に、あなたのコードが

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

のようになります。今、あなたは」勝ちましたすべての奇妙なforeach(..)が壊れていることに疑問を持っていなければならない。コード全体のステートメント

0

あなたはdoループ

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