Php 用于选择选项组的具有递归ArrayInterator的多维数组值
我有一个新的多维数组,我正在尝试使用选项组进行多个下拉选择。因此,每个选择都包含带有Php 用于选择选项组的具有递归ArrayInterator的多维数组值,php,arrays,Php,Arrays,我有一个新的多维数组,我正在尝试使用选项组进行多个下拉选择。因此,每个选择都包含带有“$value['proj_id']$value['projName']]的选项。选择按id分组(第一个选择:127,第二个选择:131,第三个选择:130等)选项按客户端名称分组,第一个opt.group另一个客户端,有一个选项。第二个opt.group Nice,有两个选项等。在我使用RecursiveArrayIterator()third dimension之前,它不再起作用: $iterator = n
“$value['proj_id']
$value['projName']]
的选项。选择按id分组(第一个选择:127,第二个选择:131,第三个选择:130等)选项按客户端名称分组,第一个opt.group另一个客户端,有一个选项。第二个opt.group Nice,有两个选项等。在我使用RecursiveArrayIterator()
third dimension之前,它不再起作用:
$iterator = new RecursiveArrayIterator( $project_data_group );
$dropdown = '';
// get all children for dropdown
while ( $iterator->valid() ) {
if ( $iterator->hasChildren() ) {
foreach ( $iterator->getChildren() as $key1 => $value ) {
$dropdown .= "<option data-proj_id=" . $value[ 'proj_id' ] . " value=" . $value[ 'projName' ] . ">" . $value[ 'projName' ] . "</option>";
}
}
break;
}
我还没有对此进行测试,但是根据您想要的分组,这种方法可能会起作用
function getGroupedDropdownOptions($array) {
$options = [];
foreach ( $array as $groups ) {
foreach ( $groups as $clientName => $group ) {
// You should be able to use $clientName or $group['client'] here
$options[$group['client']][] = ["proj_name" => $group['projName'], "proj_id" => $group['proj_id'];
}
break;
}
return $options;
}
在使用getGroupedDropdownOptions()设置$dropdownOptions之后,像这样构建HTML
当您说您想要选项组时,您的意思是您想要每个127和131 ETC的
,您可以将阵列显示为var\u export()
,我们可以轻松使用该输出来测试answer@RiggsFolly我将数组编辑为var\u export()
。是的,我想要
但是对于每个客户机以及Nice和Mikrosoft等。我需要五个选择,每个选择包含一个数组:127、131、130、133、134,带有分组选项。在我给出的代码中,我不使用第二级的数组键(即:“另一个客户机”、“Nice”等).但我想用它们作为
一级键的倍数(总共五个)使用分组选项选择127、131、130、133、134。抱歉,我不确定我是否遵循。如果数据在客户机中,为什么不使用它?是的,那就是客户机
。我可以,但不知道如何使用。我的想法是使用它来创建组数组,从中我可以创建
@Atis。我更新了答案,只使用foreach循环。这我们会按照你需要的方式构建数据,但我还没有测试过。
function getGroupedDropdownOptions($array) {
$options = [];
foreach ( $array as $groups ) {
foreach ( $groups as $clientName => $group ) {
// You should be able to use $clientName or $group['client'] here
$options[$group['client']][] = ["proj_name" => $group['projName'], "proj_id" => $group['proj_id'];
}
break;
}
return $options;
}
<select>
<?php foreach($dropdownOptions as $groupName => $group): ?>
<optgroup label="<?php echo $groupName; ?>">
<?php foreach($group as $option): ?>
<option data-proj_id="<?php echo $option['proj_id']; ?>" value="<?php echo $option['proj_name']; ?>"> <?php echo $option['proj_name']; ?></option>
<?php endforeach; ?>
</optgroup>
<?php endforeach; ?>
</select>