Php 如何使用循环但不更改对象(光标)?

Php 如何使用循环但不更改对象(光标)?,php,object,foreach,cursor,Php,Object,Foreach,Cursor,我刚刚发现我的打印处理程序确实改变了对象的光标。(这意味着查看对象会改变它,我不希望这样做。) 例如,如果我打印mysqli_查询的结果,我需要添加类似$result->data_seek(0)的内容;在我开始之前 我尝试使用克隆而不是对象,但显然无法克隆mysqli_查询 有没有一种方法可以在不改变的情况下处理任意对象 我简化了我的方法,以保持对foreach循环的关注 提前感谢您的帮助! 彼得 你考虑过一个更简单的解决方案吗。将所有结果放入一个数组中。然后,您可以随意在数组中上下移动—使用前

我刚刚发现我的打印处理程序确实改变了对象的光标。(这意味着查看对象会改变它,我不希望这样做。)

例如,如果我打印mysqli_查询的结果,我需要添加类似$result->data_seek(0)的内容;在我开始之前

我尝试使用克隆而不是对象,但显然无法克隆mysqli_查询

有没有一种方法可以在不改变的情况下处理任意对象

我简化了我的方法,以保持对foreach循环的关注

提前感谢您的帮助! 彼得


你考虑过一个更简单的解决方案吗。将所有结果放入一个数组中。然后,您可以随意在数组中上下移动—使用前面提到的getArrayFromSqlResult()方法。我编写MyPrint()方法的目的是“哦,我的代码不起作用。让我们显示输入,看看输入是否有问题。”特别是对于这样的目的,我不只是为了查看而更改输入是非常重要的。这是为了解决在HTML中查看print_r()时看起来不太好看的问题
private static function _recursivePrintHandler($input, string $tab)
{

  if(is_array($input))
  {
    $echoStr = 'array'. PHP_EOL;
  }
  elseif(is_object($input))
  {
    $echoStr = 'object'. PHP_EOL;
    //$input = clone $input; // does not work, i.e. one cannot clone mysqli objects :-(
  }
  else 
  {
    return 'UNKNOWN TYPE';
  }

  $echoStr .= $tab. '('. PHP_EOL;
  $tabAdditional = '    ';

  foreach ($input as $key => $value) 
  {
    $echoStr .= $tab. '['. $key. '] => '. CallSomeThing(). PHP_EOL;
  }
  $echoStr .= $tab. ')';
  return $echoStr;
}