我见过的代码我工作,以下内容:

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];
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top