1 回答

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
您需要$request_data->availability在輸出數(shù)據(jù)之前對(duì)數(shù)組進(jìn)行排序,并保持最后一個(gè)optgroup標(biāo)簽值,這樣您就不會(huì)兩次輸出相同的標(biāo)簽:
$request_data = json_decode( $json );
usort($request_data->availability, function ($a, $b) {
return strcmp($a->program->program, $b->program->program);
});
echo '<select class="select_availability" name="availability">' . "\n";
$last_program = '';
foreach($request_data->availability as $ava){
if($ava->rate->id == 2){
if ($ava->program->program != $last_program) {
if ($last_program != '') echo "</optgroup>\n";
echo '<optgroup label="' . $ava->program->program . '">' . "\n";
$last_program = $ava->program->program;
}
echo "<option>$ava->dateFormat</option>\n";
}
}
if ($last_program != '') echo "</optgroup>\n";
echo "</select>\n";
輸出:
<select class="select_availability" name="availability">
<optgroup label="EASTERN ISLANDS">
<option>Dec 21 - 28, 2019</option>
</optgroup>
<optgroup label="WESTERN ISLANDS">
<option>Dec 14 - 21, 2019</option>
<option>Dec 28 - Jan 04 2020</option>
</optgroup>
</select>
請(qǐng)注意,如果數(shù)組中的日期可能未針對(duì)每個(gè)程序進(jìn)行排序,您可以修改排序函數(shù)來(lái)處理該問題(并首先給出最早的日期):
usort($request_data->availability, function ($a, $b) {
return strcmp($a->program->program, $b->program->program) ?: strcmp($a->dateStarts, $b->dateStarts);
});
- 1 回答
- 0 關(guān)注
- 90 瀏覽
添加回答
舉報(bào)