首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用<optgroup>在组相关选项中的Foreach循环

使用<optgroup>在组相关选项中的Foreach循环
EN

Stack Overflow用户
提问于 2018-12-05 11:24:45
回答 2查看 79关注 0票数 0

我有一个数组

代码语言:javascript
运行
复制
$this->getprevioussprint = Array

( =>阵列( release_name => Relese1 sprint_name => Sprint1 sprint_id => 1)

代码语言:javascript
运行
复制
[1] => Array
    (
        [release_name] => Relese1
        [sprint_name] => Sprint2
        [sprint_id] => 2
    )

[2] => Array
    (
        [release_name] => v2
        [sprint_name] => Sprint1
        [sprint_id] => 3
    )

)

我在一个与组相关的选项中有一个Foreach循环,所以我尝试了

代码语言:javascript
运行
复制
<select class="col-md-2">
    <?php foreach ($this->getprevioussprint as $key =>$pSprint):
    $prev=$pSprint['release_name'];
    ?>
    <optgroup label="<?php echo  $pSprint['release_name'] ;  ?>">
        <option value=""><?php echo $pSprint['sprint_name'] ?></option>
    </optgroup>
</select>

但我得到了产出

代码语言:javascript
运行
复制
 <select>
        <optgroup label="release_name">
            <option value="1">Sprint1</option>
        </optgroup>
        <optgroup label="Relese1">
            <option value="2">Sprint2</option>
        </optgroup> 
 <optgroup label="V2">
            <option value="3">Sprint1</option>
        </optgroup> 
    </select>

预期产出

代码语言:javascript
运行
复制
 <select>
        <optgroup label="Relese1">
            <option value="1">Sprint1</option>
            <option value="2">Sprint2</option>
        </optgroup> 
 <optgroup label="v2">
            <option value="3">sprint1</option>

        </optgroup> 
    </select>

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-05 11:31:47

首先,您需要分组数组。在一个数组中插入相同release_name的平均数组。所以用吧

代码语言:javascript
运行
复制
$newArr = [];
foreach ($_this->getprevioussprint as $item){
    $newArr[$item['release_name']][] = $item;
}

然后循环通过新的数组

代码语言:javascript
运行
复制
<select class="col-md-2">
    <?php foreach ($newArr as $key=>$item): ?>
    <optgroup label="<?= $key ?>">
        <?php foreach ($item as $key=>$pSprint): ?>
        <option value=""><?= $pSprint['sprint_name'] ?></option>
        <?php endforeach ?>
    </optgroup>
    <?php endforeach ?>
</select>
票数 1
EN

Stack Overflow用户

发布于 2018-12-05 12:04:14

首先,您需要用它们的发布名对数组进行分组:

代码语言:javascript
运行
复制
echo '<select class="col-md-2">';

    foreach (group_by_release_name($this->getprevioussprint) as $key => $val):

        echo '<optgroup label="'.$key.'">';

        foreach($val as $k => $v):

            echo '<option value="'.$v['sprint_id'].'">'.$v['sprint_name'].'</option>';

        endforeach;

        echo '</optgroup>';

    endforeach;

echo '</select>';

function group_by_release_name($arr){

    $result = [];

    $current_release_name = '';

    foreach($arr as $k => $v){
        $current_release_name = $v['release_name'];

        unset($v['release_name']);

        $result[$current_release_name][] = $v;
    }

    return $result;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53631208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档