0
我有這樣的記錄功能爲什麼PHP給出未定義的索引,但仍然返回該索引的數據?
$e = new Exception();
$stack = $e -> getTrace();
$exclude = 'foo.php';
while (isset ($stack [0])
&& ($exclude === substr ($stack [0] ['file'], -strlen($exclude))
|| 'error_handler' === $stack [0] ['function']))
{
array_shift ($stack);
}
有時候,這給
Undefined index: file in bar.php on line 84
有什麼奇怪的是,如果我在任何時候打印出的$stack[0]
內容則是陣列內的file
指數。
我可以通過在同時添加條件
isset ($stack [0] ['file'])
避免這種錯誤,但它是邏輯冗餘 - file
是總是存在於$stack[0]
,我已經手動驗證了這一點。此外,如果我在循環內打印$stack[0]['file']
(在shift
之後),則它可以發出Undefined index
警告,並且仍會打印該索引的數據。
這怎麼會發生?
如果你的問題包含模擬數據來初始化'$ stack',這將有所幫助。 – Quentin
你需要給我們一個[mcve] – Rizier123
@arkascha括號內的空格是[完全可以接受的](https://3v4l.org/S510W)。 – bishop