Php 重建动态下拉列表的数组
我试图获取一个查询结果,构建到一个关联数组中,在该数组中,我使用高级别作为常规下拉列表,该下拉列表选择将加载数组的子级 我目前的职能:Php 重建动态下拉列表的数组,php,Php,我试图获取一个查询结果,构建到一个关联数组中,在该数组中,我使用高级别作为常规下拉列表,该下拉列表选择将加载数组的子级 我目前的职能: $getDisplays = " SELECT * FROM locations l inner join displays d ON d.location_id = l.id;"; $displayResult = $mysqlConn->query($getDisplays); 这将返回: Array ( [ID] => 1 [locatio
$getDisplays = "
SELECT *
FROM locations l
inner join displays d
ON d.location_id = l.id;";
$displayResult = $mysqlConn->query($getDisplays);
这将返回:
Array
(
[ID] => 1
[location_name] => Office 1
[display_name] => lobby
[location_id] => 1
)
Array
(
[ID] => 2
[location_name] => Office 1
[display_name] => break room
[location_id] => 1
)
Array
(
[ID] => 3
[location_name] => Office 2
[display_name] => lobby
[location_id] => 2
)
Array
(
[ID] => 4
[location_name] => Office 2
[display_name] => break room
[location_id] => 2
)
Array
(
[ID] => 10
[location_name] => Office 5
[display_name] => Break Room
[location_id] => 5
)
Array
(
[ID] => 11
[location_name] => Office 5
[display_name] => Lobby
[location_id] => 5
)
Array
(
[ID] => 12
[location_name] => Office 5
[display_name] => Conference Room
[location_id] => 5
)
我正在尝试创建动态下拉列表,以便第一个下拉列表显示每个不同的位置名称,第二个下拉列表包含相应的显示名称,具体取决于选择
因此,对于这个数组,第一个下拉列表应该是:
<option>Office 1</option>
<option>Office 2</option>
<option>Office 5</option>
办公室1
办公室2
办公室5
如果我选择Office 1,下一个下拉列表将包含:
<option>lobby</option>
<option>break room</option>
大厅
休息室
我现在构建它们的方式:
<label for="plantSelect">Select A Location</label>
<select class="form-control" id="plantSelect">
<?php foreach($displayResult as $area=>$display):?>
<option><?php echo $display['location_name']?></option>
<?php endforeach;?>
</select>
<label for="areaSelect">Select An Area</label>
<select class="form-control" id="areaSelect">
<option>Please Choose a Location</option>
</select>
选择一个位置
选择一个区域
请选择一个位置
问题是,第一个下拉列表显示了每个条目,因此它显示了Office 1、Office 2和Office 5的多个实例。我希望它只显示每个位置名称中的一个,然后加载下一个下拉列表,其中包含所选位置的子项(display_name)。我还需要display中的ID,以便将其保存到数据库中,所以我想,一旦我解决了这个问题,我应该能够在以后的表单中包含它
但是,阵列有什么问题吗?您可以像这样重建阵列:
$displayNames = array();
foreach($displayResult as $subArray) {
if(!array_key_exists($subArray['location_name'], $displayNames)) {
$displayNames[$subArray['location_name']] = array();
}
$displayNames[$subArray['location_name']][] = $subArray['display_name'];
}
现在,您可以执行以下操作:
<?php foreach($displayNames as $displayName):?>
<option><?php echo key($displayName['location_name'])?></option>
<?php endforeach;?>
事情不会重演。另外,现在您可以轻松创建其他下拉列表
$displayNames = array();
foreach($displayResult as $subArray) {
if(!array_key_exists($subArray['location_name'], $displayNames)) {
$displayNames[$subArray['location_id']]['location'] = $subArray['location_name'];
$displayNames[$subArray['location_id']]['display_name'] = array();
}
array_push( $displayNames[$subArray['location_id']]['display_name'], array($subArray['ID'] => $subArray['display_name']));
}
打印(显示名称) 所以,我尝试了这个,看起来我的第一个下拉列表现在只有正确数量的条目,但它们都是0