> 백엔드 개발 > PHP 튜토리얼 > Invalid argument supplied for foreach()

Invalid argument supplied for foreach()

WBOY
풀어 주다: 2016-06-06 20:47:30
원래의
2140명이 탐색했습니다.

<code>$data[0] = array(
            "file"=>"jquery",
            "file"=>"bootstrap"
        );
    foreach($data as $val){
        $link = $val['file'].'.js';
    }
    foreach($link as $val){
        $links = "<script src="%5C'%22.%24val%5B'file'%5D.%22%5C'"></script>";
    }
    print_r($links);
</code>
로그인 후 복사
로그인 후 복사

输出:
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

回复内容:

<code>$data[0] = array(
            "file"=>"jquery",
            "file"=>"bootstrap"
        );
    foreach($data as $val){
        $link = $val['file'].'.js';
    }
    foreach($link as $val){
        $links = "<script src="%5C'%22.%24val%5B'file'%5D.%22%5C'"></script>";
    }
    print_r($links);
</code>
로그인 후 복사
로그인 후 복사

输出:
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

参考意见如下:

  1. 你的$link是一个string。你把string放到foreach里能不出错么……

  2. 在数组中加入元素的话建议你这么写$links[]=""

  3. 若你下次再碰到这类问题,就写var_dump($你的foreach里的第一个元素)这样会输出一个结构树来看下你这个变量的类型和包含的子元素及类型

  4. 可以用is_array来判断其是否为array

与此题无关的吐槽:
只有function才限制PHP的变量范围,即使是For和Foreach内部建立的变量也木有问题,因为有预编译到OPcode的阶段。
亲测如下:

<code class="lang-PHP">foreach(array(1,2,3) as $i){
    $var=$i;
}
var_dump($var);
</code>
로그인 후 복사

可以直接输出int(3)的。
这个跟Java等严谨的语言差异很大啊,这方面资料很不好找。大家别以为是错的。但是这么写感觉好别扭,我果然还是不习惯于弱类型语言啊。

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿