$data[0] = array( "file"=>"jquery", "file"=>"bootstrap" ); foreach($data as $val){ $link = $val['file'].'.js'; } foreach($link as $val){ $links = ""; } print_r($links);
輸出:
Warning: Invalid argument supplied for foreach() in F:\xampp\htdocs\xampp\cms\Ajax\index3.php on line 10
Notice: Undefined variable: links in F:\xampp\htdocs\xampp\cms\Ajax\index3.php on line 13
回複內容:
$data[0] = array( "file"=>"jquery", "file"=>"bootstrap" ); foreach($data as $val){ $link = $val['file'].'.js'; } foreach($link as $val){ $links = ""; } print_r($links);
輸出:
Warning: Invalid argument supplied for foreach() in F:\xampp\htdocs\xampp\cms\Ajax\index3.php on line 10
Notice: Undefined variable: links in F:\xampp\htdocs\xampp\cms\Ajax\index3.php on line 13
參考意見如下:
你的$link是一個string。你把string放到foreach裡能不出錯麼……
在數組中加入元素的話建議你這麼寫$links[]=""。
若你下次再碰到這類問題,就寫var_dump($你的foreach裡的第一個元素)這樣會輸出一個結構樹來看下你這個變數的類型和包含的子項目及類型
可以用is_array來判斷其是否為array
與此題無關的吐槽:
只有function才限制PHP的變數範圍,即使是For和Foreach內部建立的變數也木有問題,因為有先行編譯到OPcode的階段。
親測如下:
foreach(array(1,2,3) as $i){ $var=$i;}var_dump($var);
可以直接輸出int(3)的。
這個跟Java等嚴謹的語言差異很大啊,這方面資料很不好找。大家別以為是錯的。但是這麼寫感覺好彆扭,我果然還是不習慣於弱類型語言啊。