【问题标题】:How to reset object pointer after foreach loop in php? [duplicate]如何在php中的foreach循环后重置对象指针? [复制]
【发布时间】:2019-11-29 03:41:34
【问题描述】:

我想遍历一个对象 3 次,但数组方法“重置”对对象不起作用。

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

我只能迭代一次。

【问题讨论】:

  • 为什么要运行外循环?
  • 拥有 3 次完整的 foreach 循环
  • 只需将所有内容提取到一个数组中。这就是简单的解决方案。但似乎你可以设置光标位置 - 见 f.e. stackoverflow.com/a/14103276/3411766
  • $a 的输出是什么

标签: php loops object pdo foreach


【解决方案1】:

你应该这样做:

$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();
}

->fetch() 命令获取数据集的下一行。

【讨论】:

  • 请看我的代码。我想重复 foreach 循环 3 次(使用 for 循环)。我只得到 foreach 循环 1 次完整迭代的输出。
  • 我编辑了答案以仅获取前 3 个项目。您必须为每一行调用 fetch() 函数
猜你喜欢
  • 2016-10-31
  • 2015-06-19
  • 1970-01-01
  • 2020-02-25
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
  • 2018-12-11
  • 2012-05-02
相关资源
最近更新 更多