Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php,foreach中的foreach_Php_Foreach - Fatal编程技术网

php,foreach中的foreach

php,foreach中的foreach,php,foreach,Php,Foreach,在这段代码中,有两个foreach。当我单独使用时,它工作得很好。但是,这两种方法并不协同工作。我为这个问题挣扎了两天 $urls = nl2br($this->input->post('urls')); $result = explode("<br />", $urls); $n = 0; foreach($result as $row) { $n++; $Google_Play_URL = $row; $string = file_get_co

在这段代码中,有两个foreach。当我单独使用时,它工作得很好。但是,这两种方法并不协同工作。我为这个问题挣扎了两天

$urls = nl2br($this->input->post('urls'));
$result = explode("<br />", $urls);

$n = 0;
foreach($result as $row)
{
$n++;   
    $Google_Play_URL = $row;
    $string = file_get_contents($Google_Play_URL);

    $dom = new DOMDocument();
    @$dom->loadHTML($string);
    $anchors = $dom->getElementsByTagName('a');

    $i = 0;
    foreach ($anchors as $anchor) 
    {
    $i++;

        if ($anchor->nodeValue === 'Email Developer') {
            $email = str_replace('mailto:', '', $anchor->getAttribute('href'));

            if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
                echo $email;

                $id = $this->session->userdata(SESSION_USERID); 

                $country = 'US';
                $type = 'android';

                $query = 'SELECT idx FROM db_advertisers WHERE email = "'.$email.'"';
                $result = $this->db->query($query);

                if($result->num_rows() < 1)
                {
                    $query = 'INSERT INTO db_advertisers (email, type, url, country, submit_user) VALUES ("'.$email.'", "'.$type.'", "'.$Google_Play_URL.'", "'.$country.'", "'.$id.'")';
                    $this->db->query($query);   
                }
            }
        }
    }
$url=nl2br($this->input->post('url');
$result=explode(“
,$url”); $n=0; foreach($结果为$行) { $n++; $Google\u Play\u URL=$row; $string=file\u get\u contents($Google\u Play\u URL); $dom=新的DOMDocument(); @$dom->loadHTML($string); $archors=$dom->getElementsByTagName('a'); $i=0; foreach($anchors作为$anchor) { $i++; 如果($anchor->nodeValue==='Email Developer'){ $email=str_replace('mailto:','',$anchor->getAttribute('href'); if(过滤变量($email,过滤验证电子邮件)){ echo$电子邮件; $id=$this->session->userdata(session\u USERID); $country='US'; $type='android'; $query='从db_广告商中选择idx,其中email=“”.$email.”; $result=$this->db->query($query); 如果($result->num_rows()<1) { $query='插入db_广告商(电子邮件、类型、url、国家/地区、提交用户)值(“.$email.”、“.$type.”、“.$Google_Play_url.”、“.$country.”、“$id.”); $this->db->query($query); } } } }
}


当我发送多个值时,这段代码只保存一个数据。它假定要保存多个数据。您看到问题了吗?

唯一明显的问题是,在内部foreach循环中,您正在设置

$result = $this->db->query($query);
这与外部foreach循环中的变量相同

foreach($result as $row)

更改一个变量名应该可以解决这个问题。

唯一明显的问题是,在内部foreach循环中,您正在设置

$result = $this->db->query($query);
这与外部foreach循环中的变量相同

foreach($result as $row)

更改一个变量名应该可以解决这个问题。

您在循环中重置$result,方法是将它用于新的查询result@MarkBaker我已将其更改为$result->$result\u data,但它仍然只保存第一个数据。您正在循环中重置$result,方法是将其用于新查询result@MarkBaker我更改了$result->$result\u数据,但是它仍然只保存第一个数据。它仍然只保存一个数据。它仍然只保存一个数据。