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>