使用for循环和switch情况迭代数据

时间:2018-12-08 07:44:10

标签: php

我在迭代数据时遇到问题。我的for循环有点奇怪。我匹配的属性->值,并将其发送到数据库。但是在此之前,我有一个Undefined offset: 84,我认为当数据为null时可能会弹出此错误。尽管数据不是空的,因为我调试了它。问题始于我编写forswitch case循环时。

        $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;
            }
        }

forswitch case在做什么,如果您需要查看代码头,here我会分享一张图片。

1 个答案:

答案 0 :(得分:1)

您的$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;
        }
    }