相当于mysql结果的each(),模仿foreach()的第一个循环

时间:2009-08-17 20:42:30

标签: php mysql foreach each

我已经在我正在处理的代码中看到了以下内容:

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

$ mysql_result当然是mysql_result,所以这个foreach相当于一段时间(mysql_fetch_row())

有时候,结果只会产生一行,但代码仍然有一个“foreach”,因此给出的印象是一个遍历多行的循环。

我尝试使用每个()但不适用于此。

我知道我可以使用mysql_fetch_row(),但代码应该是DB独立的,所以我不能使用DB特定的功能。 有没有像each()这样的东西在这种情况下工作,就像foreach()的第一次迭代一样?

PS:我目前的可读性是将上一个例子改为:

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

所以很明显,foreach最多只会循环一次。

5 个答案:

答案 0 :(得分:3)

我认为你想要的不是这个:

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

就是这样:

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

答案 1 :(得分:1)

  PS:我现在做的是什么   可读性是前一个   例如:

     

foreach($ mysql_result as $ row)   打破;

将函数包装在一个函数中,以便它显示它有一行(并且仍然是db独立的)

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

然后你的代码看起来像

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

现在你不必怀疑所有奇怪的foreach(..)休息;整个代码的陈述。

答案 2 :(得分:0)

如果您只想要一个结果,那么您不需要循环。

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

答案 3 :(得分:0)

你可以使用do循环

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

答案 4 :(得分:-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];
}