PHP: alfabetik sırayla bir dizinin değerlerini sıralamanız nasıl?

3 Cevap php

Ben PHP alfabetik bir dizinin değerlerini sıralamak istiyorum. Tüm değerleri aynı karakteri ile başladı sonra onlar böylece ikinci karakteri kullanılarak tasnif edilmelidir. Davayı duyarlı görmezden.

Örneğin:

before:
values[0] = "programming";
values[1] = "Stackoverflow";
values[2] = "question";
values[3] = "answers";
values[4] = "AA Systems";

after:
values[0] = "AA Systems";
values[1] = "answers";
values[2] = "programming";
values[3] = "question";
values[4] = "Stackoverflow";

Bazı algoritmalar bulduk ama ben hızlı ve tabloların az sayıda olan bir yol istiyorum. Davayı hassas almamak benim için özeldir. Teşekkürler.

3 Cevap

Görmek

Sizin örnek iki varsayımlar yapar:

  1. Yalnızca basit, 1-boyutlu diziler ile ilgili olduğunu.

  2. Alfabetik sıralama sonra, indeks ilk eleman alfabetik benzeri 0 tuşu ve atanacak şekilde güncelleştirin.

Bu parametreler göz önüne alındığında, en basit çözüm, bir dizi yöntem sort() kullanmaktır. Lütfen örnek ile:

$values[0] = "programming";
$values[1] = "Stackoverflow";
$values[2] = "question";
$values[3] = "answers";
$values[4] = "AA Systems";

sort($values);

Hangi aşağıdaki neden olur:

Array {
     [0] => AA Systems
     [1] => Stackoverflow
     [2] => answers
     [3] => programming
     [4] => question
}

other array sorting functions Bu daha iyi bir uyum olabilir vardır. Örneğin, ben yukarıda kullanmak basit bir alt-kasanın önünde büyük harf koyar, böylece bir öğe (tüm alt-case) olarak "güvenlik" olsaydı "Stackoverflow" sonra gitmek istiyorum üst durumda {[beri (1)]} se vs {önceliklidir alacağını [(3)]}. Harf duyarlılığı olmadan sıralamak için, verilen dizi ile aşağıdaki üretmek hangi, natcasesort() kullanabilirsiniz:

Array {
     [0] => AA Systems
     [1] => answers
     [2] => programming
     [3] => question
     [4] => Stackoverflow
}

Sürüm 5.4.0 olarak, sadece vb sort herhangi asort, ksort, fonksiyonları kullanabilir ve geçirebiliriz {[(3)] } bayrak.

sort( $array, SORT_FLAG_CASE );  // Non-associative array
asort( $array, SORT_FLAG_CASE ); // Associative array
ksort( $array, SORT_FLAG_CASE ); // Associative array, sort by indices

Eğer eski bir sürümü var ve güncellemek için (ya da değil), size natcasesort diğerleri gibi söz var, ama aynı zamanda uasort kullanabilir ve {[hazır değil ettiyseniz (2)]} strcasecmp özel bir fonksiyon olarak varyantları ile:

natcasesort( $array );          // Non-associative array
uasort( $array, 'strcasecmp' ); // Associative array
uksort( $array, 'strcasecmp' ); // Associative array, sort by indices

Siz, diğer herhangi aynı kavram uygulayabilirsiniz sorting functions.