簡體   English   中英

首先顯示具有確定值的數組元素

[英]show elements of array with determined value first

我有這個數組:

$array = [
    ['brand' => 'bmw', 'type' => 'car'],
    ['brand' => 'yahaha', 'type' => 'bike'],
    ['brand' => 'specialized', 'type' => 'bycicle'],
    ['brand' => 'toyota', 'type' => 'car'],
    ['brand' => 'honda', 'type' => 'bike']
]

我怎樣才能先顯示“汽車”,然后再顯示所有其他汽車? 我要瘋了。 像這樣的東西-> bmw, toyota, yahaha, specialized, honda

提前 tks

uasort是您的選擇:

<?php
$array = [
    ['brand' => 'bmw', 'type' => 'car'],
    ['brand' => 'yahaha', 'type' => 'bike'],
    ['brand' => 'specialized', 'type' => 'bycicle'],
    ['brand' => 'toyota', 'type' => 'car'],
    ['brand' => 'honda', 'type' => 'bike']
];

function cmp($a, $b) {
    return $a['type'] == 'car' ? -1 : 1;
}

uasort($array, 'cmp');
print_r($array);
Array
(
    [0] => Array
        (
            [brand] => bmw
            [type] => car
        )

    [3] => Array
        (
            [brand] => toyota
            [type] => car
        )

    [4] => Array
        (
            [brand] => honda
            [type] => bike
        )

    [2] => Array
        (
            [brand] => specialized
            [type] => bycicle
        )

    [1] => Array
        (
            [brand] => yahaha
            [type] => bike
        )

)

要提取brand列:

print_r(array_column($array, 'brand'));
Array
(
    [0] => toyota
    [1] => bmw
    [2] => yahaha
    [3] => specialized
    [4] => honda
)

最簡單的方法是在 output 時只通過陣列兩次,第一次跳過非汽車,第二次跳過汽車。

foreach ($array as $vehicle) {
    if ($vehicle['type'] == 'car') {
        echo $vehicle['brand'];
    }
}

foreach ($array as $vehicle) {
    if ($vehicle['type'] != 'car') {
        echo $vehicle['brand'];
    }
}

暫無
暫無

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

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