PHP: alphabate sırasına göre dizide ayrı bir değer

5 Cevap php


i want to find values in array according to alphabate and want to make list in of array values according to alphabate order.

Benim dizi böyledir:

Array ( [0] => Array ( [0] => Adidas [1] => AKG [2] => Apple [3] => Barrats [4] => Canon [5] => Dell [6] => Dixons [7] => HTC [8] => Liverpool [9] => Microsoft [10] => Pirelli Tyres [11] => )

)

ve ben böyle alphabate göre değerlerin bir listesini yapmak istiyorum:

A           
________        
  Adidas       
  AKG 

herhangi bir fikir plz?

5 Cevap

Bazı optimizasyon kullanabilirsiniz, ancak tam olarak ne sordu yapar:

    $a = array("Chicken","Fish","Hello","Lebowski","What","hey","foo");

    asort($a);
    $alphaArr = array();

    foreach(range('A', 'Z') as $letter) {

        // create empty array at offset for current letter
        $alphaArr[$letter] = array();

        foreach($a as $item) {

            // if the first letter starts with current letter
            // push it into subarray
            if (substr(strtolower($item),0,1) == strtolower($letter)) {
                $alphaArr[$letter][] = $item;
            }
        }
    }
    print_r($alphaArr);

Sen peşindeler asort

asort($a);
foreach($a AS $v) {
    echo $v . "<br />";
}

Sizin dizi zaten sıralanır.

Değerlerin üzerinde iç dizi ve daha sonra döngü ele alın.

Ilk harf değiştirdiği zaman onun bir sonraki harfi biliyorum.

Eğer şirket adının ilk harfine göre listesini başvurmak isterseniz, burada bir yolu:

$sorted = array();
foreach($companies as $company) {
    $sorted[ strtoupper($company{0}) ][] = $company;
}