php多维数组

标签 php mysql arrays

我正在从具有这些字段的表中提取数据:

zipcode,city,state,county

我的问题是一些邮政编码在多个城市,而一些城市在多个邮政编码......那么有没有办法将所有数据放入一个数组,然后将所有邮政编码按顺序分组,然后从中构建一个表,以便按顺序排列它们,但是如果数据是冗余的,例如邮政编码、城市、州和县已经在数组中,那么它会跳过它吗?

然后我可以使用 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 元素的关联数组。

此外,在检查是否重复之前,您需要检查是否存在邮政编码条目,否则您将访问 undefined index 。

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

关于php多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35161434/

相关文章:

php - 我想将选定的选项从一个文本框传递到第二个文本框

php - 根据单击的内容自定义消息

mysql - 在 MySQL 的父子关系中强制执行 "favorite"的最佳方法是什么?

php - 提交登录表单后,URL 保留在操作 php 上

PHP,MySql : How to know which table was used

php - Symfony2 - 一条 route 的多个 slug

Python MySqlDB 没有得到更新的行

arrays - 垂直连接部分单元格内容

arrays - 在 Bash 中循环遍历字符串数组?

python - """TypeError: only length-1 arrays can be converted to Python scalars"""尝试在具有 7 段显示的 Pi3 上运行计数器时