[英]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.