recherche

Maison  >  Questions et réponses  >  le corps du texte

php - 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 = "<script src=\'".$val['file']."\'></script>";
    }
    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

天蓬老师天蓬老师2784 Il y a quelques jours720

répondre à tous(1)je répondrai

  • PHP中文网

    PHP中文网2017-04-10 14:40:59

    参考意见如下:

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

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

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

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

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

    foreach(array(1,2,3) as $i){
        $var=$i;
    }
    var_dump($var);
    

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

    répondre
    0
  • Annulerrépondre