簡體   English   中英

與組相關的選項內的Foreach循環與<optgroup>

[英]Foreach loop inside a Group related options with <optgroup>

我有一個數組

$this->getprevioussprint = Array

([0] =>數組([release_name] => Relese1 [sprint_name] => Sprint1 [sprint_id] => 1)

[1] => Array
    (
        [release_name] => Relese1
        [sprint_name] => Sprint2
        [sprint_id] => 2
    )

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

我在與組相關的選項內有一個Foreach循環,所以我嘗試了

<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>

但是我得到了輸出

 <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>

預期產量

 <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>

任何幫助將不勝感激

首先,您需要對數組進行分組。 將具有相同release_name均值數組放入一個數組中。 所以用

$newArr = [];
foreach ($_this->getprevioussprint as $item){
    $newArr[$item['release_name']][] = $item;
}

然后遍歷新數組

<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>

您首先需要使用發布名稱將數組分組:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM