我已经在我正在处理的代码中看到了以下内容:
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最多只会循环一次。
答案 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];
}