[英]php multi dimensional array's
我正在从具有以下字段的表中提取数据:
zipcode,city,state,county
我的问题是,某些邮政编码位于多个城市,而某些城市则位于多个邮政编码...所以有一种方法可以将所有数据放入一个数组,然后按顺序对所有邮政编码分组,然后构建一个表,以便按顺序排列它们,但是如果数据是多余的,例如zip,城市,州和县已经在数组中,那么它会跳过吗?
因此,我可以使用echo将其打印到浏览器中,如下表所示:
74801 | Shawnee, Oklahoma | Pottawatomie
74801 | Bethel, Oklahoma | Pottawatomie
74801 | Johnson, Oklahoma | Pottawatomie
74851 | McLoud, Oklahoma | Pottawatomie
74851 | Dale, Oklahoma | Pottawatomie
等等。但是在这些情况下:
74015 | CATOOSA, Oklahoma | Rogers
74015 | COTOOSA, Oklahoma | Rogers
因为这些字段是这些字段中的重复项(而不是表的其余部分),所以我需要它跳过两次显示。
我认为是这样的:
$zipArray = array();
$zipCode = $dbhhandle->zip;
$cityName = $dbhhandle->city;
$countyName = $dbhhandle->county;
if($zipArray[$zipCode][$cityName] != $countyName) {
$zipArray[$zipCode][$cityName] = $countyName;
}
但我不确定这是否是正确的方法。
然后,一旦我构建了数组,如何构建表?
您的代码看起来非常接近,但是缺少状态。 因此,将数组的元素更改为具有state
和county
元素的关联数组。
另外,您需要检查邮政编码是否完整,然后再检查是否重复,否则将访问未定义的索引。
$zipArray = array();
$zipCode = $dbhhandle->zip;
$cityName = $dbhhandle->city;
$countyName = $dbhhandle->county;
$stateName = $dbhandle->state;
if(!isset($zipArray[$zipCode][$cityName]) || $zipArray[$zipCode][$cityName]['county'] != $countyName) {
$zipArray[$zipCode][$cityName] = array('county' => $countyName, 'state' => $stateName);
}
要显示表,请使用嵌套循环。
foreach ($zipArray as $zip => $cities) {
foreach ($cities as $city => $cityData) {
echo "<tr><td>$zip</td><td>$city, {$cityData['state']}</td><td>{$cityData['county']}</td></tr>";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.