繁体   English   中英

PHP的多维数组

[英]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;
}

但我不确定这是否是正确的方法。

然后,一旦我构建了数组,如何构建表?

您的代码看起来非常接近,但是缺少状态。 因此,将数组的元素更改为具有statecounty元素的关联数组。

另外,您需要检查邮政编码是否完整,然后再检查是否重复,否则将访问未定义的索引。

$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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM