亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

顯示按鍵分組的元素中的數組值

顯示按鍵分組的元素中的數組值

PHP
哆啦的時光機 2023-05-26 17:29:33
我有以下數據結構:Array(    [0] => stdClass Object        (            [id] => 1            [title] => Golf            [manufacturer] => 1        )    [1] => stdClass Object        (            [id] => 2            [title] => Focus            [manufacturer] => 2        )    [2] => stdClass Object        (            [id] => 3            [title] => Jazz            [manufacturer] =>         )    [3] => stdClass Object        (            [id] => 4            [title] => Passat            [manufacturer] => 1        )    [4] => stdClass Object        (            [id] => 5            [title] => Toureg            [manufacturer] => 1        )    [5] => stdClass Object        (            [id] => 6            [title] => Galaxy            [manufacturer] => 2        ))我想這樣顯示它:<div class="container id1">    ID: 1 - Golf    ID: 4 - Passat    ID: 5 - Toureg</div><div class="container id2">    ID: 2 - Focus    ID: 6 - Galaxy</div><div class="container">    ID: 3 - Jazz</div>所以我的視圖代碼將輸出我嘗試這樣做的上述數組:foreach ($cars as $car){    echo '<div class="container">';    if ($car->manufacturer) {        echo '</div>';        echo '<div class="container id'. $car->manufacturer .'">';        echo $car->id . ' - ' . $car->title;        echo '</div>';    } else {        echo '</div>';        echo '<div class="container">';        echo $car->id . ' - ' . $car->title;        echo '</div>';    }}但這會輸出幾個空<div class="container"></div>元素,而且只有<div class="container">ID: 1 - Golf</div>, 不像所需的輸出。如何使用此數組獲得所需的輸出?請注意,Jazz 沒有制造商集,因此<div>類不應該有 idX 集,其中 X 是制造商的 ID 值。
查看完整描述

1 回答

?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

您需要做的第一件事是根據您可以使用的制造商對數組進行排序usort,按值對沒有制造商的條目進行排序id。然后你可以遍歷汽車,檢查制造商是否與前一輛汽車相同,如果是,則輸出一個新<div>元素并關閉前一個(如果需要):

// sort based on manufacturer

usort($cars, function ($a, $b) {?

? ? if (!$a->manufacturer) {

? ? ? ? // if both null, sort by id

? ? ? ? if (!$b->manufacturer) return $a->id - $b->id;

? ? ? ? // otherwise sort null values last

? ? ? ? return 1;

? ? }

? ? if (!$b->manufacturer)

? ? ? ? // sort null values last

? ? ? ? return -1;

? ? return $a->manufacturer - $b->manufacturer;

});


$lastmfg = 0;

foreach ($cars as $car) {

? ? if (!$car->manufacturer || $car->manufacturer != $lastmfg) {

? ? ? ? if ($lastmfg !== 0) echo "</div>\n";

? ? ? ? echo '<div class="container'. ($car->manufacturer ?? ' id' . $car->manufacturer : '') .'">'. "\n";

? ? }

? ? echo 'ID: ' . $car->id . ' - ' . $car->title . "\n";

? ? $lastmfg = $car->manufacturer;

}

echo "</div>\n";

輸出(用于擴展演示):


<div class="container id1">

ID: 1 - Golf

ID: 4 - Passat

ID: 5 - Toureg

</div>

<div class="container id2">

ID: 2 - Focus

ID: 6 - Galaxy

</div>

<div class="container id3">

ID: 9 - Phoenix

</div>

<div class="container">

ID: 3 - Jazz

</div>

<div class="container">

ID: 7 - Falcon

</div>

<div class="container">

ID: 8 - Commodore

</div>

<div class="container">

ID: 10 - Cressida

</div>

3v4l.org 上的演示


查看完整回答
反對 回復 2023-05-26
  • 1 回答
  • 0 關注
  • 122 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號