1.背景
今天學習PHPExcel的使用,在代碼執行foreach($data as $value){...}的時候出現這樣一個警告提示:Warning: Invalid argument supplied for foreach() in I:\WWW\PHPExcel\export.php on line 35;后來查詢了一下,這個警告的意思是:foreach()遍歷輸出的是一無效的數組【注意,無效數組不等於空數組】,而導致我這個錯誤的原因是,正確的代碼應該是
【getType($i)這個方法,屬於數據庫操作,我把所有的數據庫操作封裝成了方法寫在了另一個文件中,這里沒有需要對象來調用,因此沒有取到數據導致數組為空,從而導致$data這個是一個無效數組,從而引起了報錯!】
2.摘要
為了代碼在正式上線運行中頻繁報錯:
我們應該在遍歷之前對數組變量進行一個判斷:如果該變量不是一個有效數組,則設置該變量為一個空數組即array(),這樣是較好的解決辦法!【額(⊙o⊙)…但是像我這樣,馬大哈了,在測試的時候還是先把判斷注釋掉,這樣才能知道到底是哪里錯了!因為查了怎么解決這個警告提示,所以特此記錄,如果有其他更好方法或想法,歡迎指正!】
3.解決方法
【在此,我使用三元運算符簡便了判斷數組是否為有效數組】
is_array( $data = $db->getType($i)) ? null : $data=array();
這行代碼的意思:判斷$data是否為一個有效數組,如果數組有效,繼續下列操作,如果數組是無效數組,則給$data變量賦一個空數組值
【is_array():返回一個布爾值,功能是判斷傳入的變量是否是一個有效的數組!注意,空數組 $data=array() 是有一個空值的,是一個有效數組,自己可以測試一下】