各()为MySQL的结果,相当于以模仿的foreach的第一回路()
题
我见过的代码我工作,以下内容:
foreach( $mysql_result as $row ) $site_id = $row->id;
$ mysql_result,当然一个mysql_result,所以这的foreach相当于一段时间(和mysql_fetch_row())
有时候,结果被称为产生只有一行,但代码还有一个“的foreach”,因此它的给人的印象的是通过许多行的循环。
我尝试使用每个(),但该不工作。
我知道我可以使用和mysql_fetch_row(),但该代码应该DB独立,所以我不能使用DB特定功能。 有什么样的每个(),在这种情况下,就像的foreach的第一次迭代()?
工作PS:我的可读性目前做的是前面的例子变成这样:
foreach( $mysql_result as $row ) break;
$site_id = $row->id;
所以这是很明显,在foreach最多将循环只有一次。
解决方案
我想你想要的是这个:
foreach( $mysql_result as $row ) $site_id = $row->id;
只要这样的:
$site_id = $mysql_result[0]->id;
其他提示
PS:我做什么目前为 可读性是把以前的 例如这样:
的foreach($ mysql_result为$行) 打破;
包裹在函数所以很明显,它得到一个行(和现在分贝独立的)
function fetch_single_row($result)
{
foreach( $mysql_result as $row ) break;
return $row;
}
你的代码看起来像
$row = fetch_single_row($mysql_result);
$site_id = $row->id;
现在你不必想知道所有的怪的foreach(..)休息;语句遍布代码。
如果你只想要一个结果,那么你就需要循环。
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
$site_id = $row['id'];
您可以使用一个do循环
$i =0
do {
$site_id = $mysql_result[$i++]->id;
} while ($i <= 0);
这是你想要的吗?
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];
}
不隶属于 StackOverflow