通常我使用 var_dump 和 xDebug 进行调试。这对非迭代有好处。但是对于迭代,由于我使用 die() 来停止脚本,所以结果总是出现在第一次迭代中。我怎样才能 var_dump x 迭代?
foreach ($files as $file) {
var_dump($file);die;
}
通常我使用 var_dump 和 xDebug 进行调试。这对非迭代有好处。但是对于迭代,由于我使用 die() 来停止脚本,所以结果总是出现在第一次迭代中。我怎样才能 var_dump x 迭代?
foreach ($files as $file) {
var_dump($file);die;
}
您可以通过这种方式访问数组的特定索引:
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
}
深思熟虑,另一种方式:
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。
对于第七次迭代:
$i=1;
foreach($files as $file) {
if($i=7) { var_dump($file); die(); }
$i++;
}
但是移动die()
循环的外部会给你一切。