Invalid argument supplied for foreach()
$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等严谨的语言差异很大啊,这方面资料很不好找。大家别以为是错的。但是这么写感觉好别扭,我果然还是不习惯于弱类型语言啊。
上一篇: 关于DW连接mysql数据库的问题
下一篇: Memcache及telnent命令详解
推荐阅读
-
Invalid argument supplied for foreach()
-
PHP Warning: json_encode(): Invalid UTF-8 sequence in argument in,该如何处理
-
Apache 挂了:Invalid argument: couldn't grab the accept mutex
-
老是出现mysql_fetch_array(): supplied argument is not a valid MySQL result resource
-
mysql_fetch_row(): supplied argument is not a valid MySQL result resource,何人能解?该如何解决
-
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result res,该怎么解决
-
Warning: Invalid argument supplied for foreach()_PHP教程
-
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
-
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
-
apache启动报 shmget() failed: Invalid argument的解决方法