我在迭代数据时遇到问题。我的for
循环有点奇怪。我匹配的属性->值,并将其发送到数据库。但是在此之前,我有一个Undefined offset: 84
,我认为当数据为null时可能会弹出此错误。尽管数据不是空的,因为我调试了它。问题始于我编写for
和switch 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;
}
}
for
和switch case
在做什么,如果您需要查看代码头,here我会分享一张图片。
答案 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;
}
}