0

通常我使用 var_dump 和 xDebug 进行调试。这对非迭代有好处。但是对于迭代,由于我使用 die() 来停止脚本,所以结果总是出现在第一次迭代中。我怎样才能 var_dump x 迭代?

foreach ($files as $file) {
  var_dump($file);die;
}
4

3 回答 3

1

您可以通过这种方式访问​​数组的特定索引:

var_dump($files[0]); //first position
var_dump($files[1]); //second position and so on...

您还可以使用 var_dump 传递数组,它会打印数组的结构。

你可以继续使用 var_dump ,但是把 die 放在这样的 if 语句中

foreach ($files as $key => $file) {
    var_dump($file);
    if ($key == count($files)-1) die; //it will die after the var_dump of the last element of the array
}
于 2013-11-14T18:24:47.507 回答
1

深思熟虑,另一种方式:

array_walk($files, function ($file, $i) {
    var_dump($file);
    ($i == 1) && die;

    // your code
});

我喜欢让我的调试代码尽可能的紧凑,因为我写了很多就被扔掉了。

如果您可能希望调试代码一直存在,请考虑一种策略模式:

$worker = function ($file, $i) {
    // your code
};
$debugger = function ($file, $i) use ($worker) {
    var_dump($file);
    ($i == 1) && die;

    return $worker($file, $i);
};
$debugLevel = 1;
array_walk($files, (0 < $debugLevel ? $debugger : $worker));

如果您的调试级别为 1 或更高,则调用调试函数:它只是进行一些诊断,然后传递给工作人员。否则,直接调用worker。

于 2013-11-14T19:00:20.263 回答
0

对于第七次迭代:

$i=1;
foreach($files as $file) {
  if($i=7) { var_dump($file); die(); }
  $i++;
}

但是移动die()循环的外部会给你一切。

于 2013-11-14T18:24:12.967 回答