Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 等效于mysql结果的each(),以模拟foreach()的第一个循环_Php_Mysql_Foreach_Each - Fatal编程技术网

Php 等效于mysql结果的each(),以模拟foreach()的第一个循环

Php 等效于mysql结果的each(),以模拟foreach()的第一个循环,php,mysql,foreach,each,Php,Mysql,Foreach,Each,我在正在编写的代码中看到了以下内容: foreach( $mysql_result as $row ) $site_id = $row->id; $mysql\u result当然是一个mysql\u结果,所以这个foreach相当于一个while(mysql\u fetch\u row()) 有时,已知结果只产生一行,但代码仍然有一个“foreach”,因此它给人的印象是通过许多行的循环 我尝试使用each(),但不适用于此 我知道我可以使用mysql\u fetch\u row(),但是代码

我在正在编写的代码中看到了以下内容:

foreach( $mysql_result as $row ) $site_id = $row->id;
$mysql\u result当然是一个mysql\u结果,所以这个foreach相当于一个while(mysql\u fetch\u row())

有时,已知结果只产生一行,但代码仍然有一个“foreach”,因此它给人的印象是通过许多行的循环

我尝试使用each(),但不适用于此

我知道我可以使用mysql\u fetch\u row(),但是代码应该是独立于数据库的,所以我不能使用特定于数据库的函数。 在本例中是否有类似于each()的东西与foreach()的第一次迭代一样有效

PS:为了可读性,我目前所做的是将前面的示例转换为:

foreach( $mysql_result as $row ) break;
$site_id = $row->id;
很明显,foreach最多只能循环一次。

这就是您想要的吗

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];
}

如果只需要一个结果,则不需要循环

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

我想你想要的不是这个:

foreach( $mysql_result as $row ) $site_id = $row->id;
仅此而已:

$site_id = $mysql_result[0]->id;
PS:我现在做什么 可读性是前一个问题 例如:

foreach( $mysql_result as $row ) break;
$site_id = $row->id;
foreach($mysql\u结果为$row) 中断

将其包装在一个函数中,这样就可以清楚地看到它只得到一行(并且仍然是db独立的)

那么你的代码看起来像

$row = fetch_single_row($mysql_result);
$site_id = $row->id;
现在你不必对所有奇怪的foreach(…)break感到惊讶;代码中的所有语句。

您应该使用do循环

$i =0
do {
    $site_id = $mysql_result[$i++]->id;
} while ($i <= 0);
$i=0
做{
$site\u id=$mysql\u result[$i++]->id;
}而($我认为current()的失败方式与每个()的失败方式相同。你确定吗?我试试看。