繁体   English   中英

为什么我收到此错误注意:未定义索引:主机

[英]Why am I getting this error Notice: Undefined index: host

我的示例代码在这里

include 'simple_html_dom.php';
function get_all_links($url){
    global $host;
    $html = new simple_html_dom();
    $html->load(file_get_contents($url));

    foreach($html->find('a') as $a){
        $host1 = parse_url($a->href);
        $host = parse_url($url);
            if($host1['host'] == $host['host']){
                    $data[] = $a->href;
            }
    }
    return $data;

}
$links = get_all_links("http://www.example.com/");

foreach($links as $link){
   echo $link."<br />";
}

当我尝试这个代码时,我收到了这个错误:注意:未定义的索引:主机在...我的代码有什么问题? 请建议我一些帮助代码,在此先感谢。

在假定存在之前,您需要使用isset检查数组是否包含'host'条目:

if (isset($host1['host']) && isset($host['host']) 
        && $host1['host'] == $host['host']) {

或者您可以使用@来禁止检查中的警告

if (@$host1['host'] == @$host['host']) {

但是,当缺少两者时,你需要仔细检查后者是否正常工作。

更新:正如其他人指出的那样,还有array_key_exists 它将处理null数组值,而issetnull值返回false

正如其他人已经回答的那样, isset()array_key_exists()都可以在这里工作。 isset()很好,因为它实际上可以采用多个参数:

if (isset($array[0], $array[1], $array[2]))
{
    // ...
}

// same as

if (isset($array[0]) && isset($array[1]) && isset($array[2]))
{
    // ...
}

仅在设置了所有参数时返回true

你可以使用array_key_exists找出一个数组是否有一个名为“host”的索引

if (array_key_exists($host, "host") && array_key_exists($host1, "host") && ...)

http://us3.php.net/manual/en/function.array-key-exists.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM