簡體   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