通常我使用var_dump和xDebug進行調試。非迭代很好。但是對於迭代來說,因爲我使用die()來停止腳本,所以結果總是出現在第一次迭代中。我怎樣才能var_dump的X迭代?如何在php中var_dump迭代?
foreach ($files as $file) {
var_dump($file);die;
}
通常我使用var_dump和xDebug進行調試。非迭代很好。但是對於迭代來說,因爲我使用die()來停止腳本,所以結果總是出現在第一次迭代中。我怎樣才能var_dump的X迭代?如何在php中var_dump迭代?
foreach ($files as $file) {
var_dump($file);die;
}
第七迭代:
$i=1;
foreach($files as $file) {
if($i=7) { var_dump($file); die(); }
$i++;
}
但移動die()
外循環會給你一切。
可以訪問陣列的具體指標是這樣的:
var_dump($files[0]); //first position
var_dump($files[1]); //second position and so on...
你也可以用var_dump傳遞一個數組,它會打印出數組的結構。
而且你可以繼續使用的var_dump因爲你已經是的,但把如果那裏面的死聲明這樣
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
});
我喜歡使我的調試代碼儘可能緊湊,因爲我寫了很多它只是被扔掉。
如果你可能希望調試代碼流連,考慮一個策略模式:如果你有1個或多個調試級別
$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));
,調試函數被調用:它只是做一些診斷,然後傳遞給工人。否則,直接調用該工作人員。
只要刪除'die()'? – AbraCadaver
或在foreach循環後移動死亡 –