2013-11-14 65 views
0

通常我使用var_dump和xDebug進行調試。非迭代很好。但是對於迭代來說,因爲我使用die()來停止腳本,所以結果總是出現在第一次迭代中。我怎樣才能var_dump的X迭代?如何在php中var_dump迭代?

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

只要刪除'die()'? – AbraCadaver

+0

或在foreach循環後移動死亡 –

回答

0

第七迭代:

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

但移動die()外循環會給你一切。

1

可以訪問陣列的具體指標是這樣的:

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 
} 
1

回味無窮,的另一種方法:

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)); 

,調試函數被調用:它只是做一些診斷,然後傳遞給工人。否則,直接調用該工作人員。