Php 使用for循环和switch case迭代数据

Php 使用for循环和switch case迭代数据,php,Php,我在迭代数据时遇到问题。我的for循环有点奇怪。我正在匹配属性->值并将它们发送到DB。但在此之前,我有一个未定义的偏移量:84,我认为当数据为空时,可能会弹出这个错误。虽然数据不是空的,因为我调试了它。当我为和开关盒循环写入时,问题就开始了 $getTR = $path->query("table[@class='bgc_line']/tr/td"); foreach($getTR as $tr){ if ($tr->leng

我在迭代数据时遇到问题。我的
for
循环有点奇怪。我正在匹配属性->值并将它们发送到DB。但在此之前,我有一个
未定义的偏移量:84
,我认为当数据为空时,可能会弹出这个错误。虽然数据不是空的,因为我调试了它。当我为和
开关盒
循环写入
时,问题就开始了

        $getTR = $path->query("table[@class='bgc_line']/tr/td");
        foreach($getTR as $tr){
            if ($tr->length == 2) {
                $route = $path>query("//table[@class='bgc_line']/tr/td[1]");
                foreach ($route as $td1) {
                    $property[] = trim($td1->nodeValue);
                }

                $route = $path->query("//table[@class='bgc_line']/tr/td[2]");
                foreach ($route as $td2) {
                    $value[] = trim($td2->nodeValue);
                }
            }
        }


        for ($a=0; $a < count($property); $a++) { 
            switch ($property[$a]) {
                    case '物件名':
                        $database['building_name'] = $value[$a];
                        break;
                    case '販売価格':
                        $database['price'] = $value[$a];
                        break;
                    case '専有面積':
                        $database['extend'] = $value[$a];
                        break;
                    case '所在地':
                        $database['address'] = $value[$a];
                        break;
                    case '総戸数':
                        $database['total_house'] = $value[$a];
                        break;
                    case '間取り':
                        $database['rooms'] = $value[$a];
                        break;
                    case '竣工時期':
                        $database['cons_finish'] = $value[$a];
                        break;
                    case '管理会社':
                        $database['company_name'] = $value[$a];
                        break;
                    case '入居時期':
                        $database['entry'] = $value[$a];
                        break;
                    case 'バルコニー面積':
                        $database['balcony'] = $value[$a];
                        break;
                    default:
                        break;
            }
        }
$getter=$path->query(“表[@class='bgc_-line']]/tr/td”);
foreach($getter作为$tr){
如果($tr->length==2){
$route=$path>query(//table[@class='bgc_line']]/tr/td[1]”;
foreach(路线为$td1){
$property[]=trim($td1->nodeValue);
}
$route=$path->query(//table[@class='bgc_line']]/tr/td[2]”;
foreach(路线为$td2){
$value[]=trim($td2->nodeValue);
}
}
}
对于($a=0;$a

我对
开关盒的
有什么错?如果您需要查看代码头,我会共享一张图像

您的
$value
数组比
$property
数组短,因此当您访问没有相应值的属性时,尝试访问
$value[$a]
时会出现错误

使用
count($property)
count($value)
中的最小值作为循环的限制,这样就不会超过
$value
的末尾

    $limit = min(count($property), count($value));
    for ($a=0; $a < $limit; $a++) { 
        switch ($property[$a]) {
        case '物件名':
            $database['building_name'] = $value[$a];
            break;
        case '販売価格':
            $database['price'] = $value[$a];
            break;
        case '専有面積':
            $database['extend'] = $value[$a];
            break;
        case '所在地':
            $database['address'] = $value[$a];
            break;
        case '総戸数':
            $database['total_house'] = $value[$a];
            break;
        case '間取り':
            $database['rooms'] = $value[$a];
            break;
        case '竣工時期':
            $database['cons_finish'] = $value[$a];
            break;
        case '管理会社':
            $database['company_name'] = $value[$a];
            break;
        case '入居時期':
            $database['entry'] = $value[$a];
            break;
        case 'バルコニー面積':
            $database['balcony'] = $value[$a];
            break;
        default:
            break;
        }
    }
$limit=min(计数($property),计数($value));
对于($a=0;$a<$limit;$a++){
开关($property[$a]){
案例物件名':
$database['building_name']=$value[$a];
打破
案例販売価格':
$database['price']=$value[$a];
打破
案例専有面積':
$database['extend']=$value[$a];
打破
案例所在地':
$database['address']=$value[$a];
打破
案例総戸数':
$database['total_house']=$value[$a];
打破
案例間取り':
$database['rooms]=$value[$a];
打破
案例竣工時期':
$database['cons_finish']=$value[$a];
打破
案例管理会社':
$database['company_name']=$value[$a];
打破
案例入居時期':
$database['entry']=$value[$a];
打破
案例バルコニー面積':
$database['baround']=$value[$a];
打破
违约:
打破
}
}

检查
$value
数组中有多少个元素,如果(count($property)!=count($value))回显“something”,则可以放置类似
的内容您应该在for循环中尝试if-else:),但当我对DOMDocument执行相同的刮取操作并使用foreach而不是for循环时。那就没有问题了。当我使用Xpath并使用For时,就会出现这个问题。比如:像这样,@Nigelrenco你能给我举个例子说明for循环中的if-else吗@ParvejAlamSo坚持你的另一种方式——在这个版本中,你使用了2个XPath表达式,希望数据匹配。这可能有风险(IMHO)。我补充了一些解释,这有帮助吗?