Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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中,如何在foreach循环之后重置对象指针?_Php_Loops_Object_Pdo_Foreach - Fatal编程技术网

在php中,如何在foreach循环之后重置对象指针?

在php中,如何在foreach循环之后重置对象指针?,php,loops,object,pdo,foreach,Php,Loops,Object,Pdo,Foreach,我想遍历一个对象3次,但数组方法“reset”在对象上不起作用 // DB connection works, fetch mode is FETCH_OBJ an cannot be changed for this question, code is simplified $a = $pdo->query("SELECT name FROM items"); for ($i = 0; $i < 3; $i++){ foreach ($a as $b) e

我想遍历一个对象3次,但数组方法“reset”在对象上不起作用

// DB connection works, fetch mode is FETCH_OBJ an cannot be changed for this question, code is simplified

$a = $pdo->query("SELECT name FROM items");
for ($i = 0; $i < 3; $i++){
    foreach ($a as $b)
        echo $b->name;
}
//数据库连接正常,获取模式为fetch\u OBJ,此问题无法更改,代码简化
$a=$pdo->query(“从项目中选择名称”);
对于($i=0;$i<3;$i++){
foreach($a为$b)
echo$b->name;
}

我只能迭代一次。

您应该这样做:

$sql = 'SELECT name FROM items';
try {
  $stmt = $pdo->query($sql);
  for ($i=0; $i<3; $i++) {
    $row = $stmt->fetch();
    echo($row['name']);
  }
  $stmt = null;
}
catch (PDOException $e) {
  print $e->getMessage();
}
$sql='selectname FROM items';
试一试{
$stmt=$pdo->query($sql);
对于($i=0;$ifetch();
echo($row['name']);
}
$stmt=null;
}
捕获(PDO$e){
打印$e->getMessage();
}

->fetch()命令可以让您进入数据集的下一行。

为什么要运行外部循环?要有3次完整的foreach循环,只需将所有内容提取到一个数组中即可。这是一个简单的解决方案。但您似乎可以设置光标位置-请参阅f.e.$apless的输出是什么请查看我的代码。我想将foreach循环重复3次(使用for循环)。我只获取foreach循环的1次完整迭代的输出。我编辑了答案以仅获取前3项。您必须为每行调用fetch()函数