第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

對(duì)具有相同 ID 的循環(huán)中的元素進(jìn)行分組

對(duì)具有相同 ID 的循環(huán)中的元素進(jìn)行分組

PHP
qq_笑_17 2022-06-17 10:15:07
<?php$json = '{"name":"Test","id_test":8979,"availability":[{"dateStarts":"2019-12-14","dateEnds":"2019-12-21","dateFormat":"Dec 14 - 21, 2019","length":7,"spaces":5,"program":{"id":2,"title":"Long 2/2","program":"WESTERN ISLANDS"},"rate":{"id":2,"title":"Western Islands Program","prices":[{"custom":true,"defaultPrice":"4845","price":"4545","deck":"all cabins & decks","season":"","cabin":""}]}},{"dateStarts":"2019-12-21","dateEnds":"2019-12-28","dateFormat":"Dec 21 - 28, 2019","length":7,"spaces":"-1","program":{"id":1,"title":"Long 1/2","program":"EASTERN ISLANDS"},"rate":{"id":2,"title":"Eastern Islands Program","prices":[{"custom":false,"defaultPrice":"4845","price":"4845","deck":"all cabins & decks","season":"","cabin":""}]}},{"dateStarts":"2019-12-28","dateEnds":"2020-01-04","dateFormat":"Dec 28 - Jan 04 2020","length":7,"spaces":"-1","program":{"id":2,"title":"Long 2/2","program":"WESTERN ISLANDS"},"rate":{"id":2,"title":"Western Islands Program","prices":[{"custom":false,"defaultPrice":"4845","price":"4845","deck":"all cabins & decks","season":"","cabin":""}]}}]}';    $request_data = json_decode( $json ); ?><select class="select_availability" name="availability">     <?php    foreach($request_data->availability as $ava){    if($ava->rate->id == 2){?><optgroup label="<?=$ava->program->program?>"><option><?=$ava->dateFormat?></option></optgroup><?php                                                    }}?></select>測(cè)試鏈接: http: //phpfiddle.org/main/code/gy8f-t3qq我有一個(gè)轉(zhuǎn)換為數(shù)組的 json 字符串,然后我使用foreach循環(huán)來(lái)獲取所有信息,所以基本上這是我得到的結(jié)果:<select class="select_availability" name="availability">     <optgroup label="WESTERN ISLANDS"><option>Dec 14 - 21, 2019</option></optgroup><optgroup label="EASTERN ISLANDS"><option>Dec 21 - 28, 2019</option></optgroup><optgroup label="WESTERN ISLANDS"><option>Dec 28 - Jan 04 2020</option></optgroup></select>
查看完整描述

1 回答

?
MYYA

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

});


查看完整回答
反對(duì) 回復(fù) 2022-06-17
  • 1 回答
  • 0 關(guān)注
  • 90 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)