Belirli bi sayı ile başlayanları sıralama
<?php
// Veritabanından gelen dizi
$arr = array(
99000123,
99000124,
99000125,
99000126,
99000127,
99000128,
99000129,
93000119,
93000159
);
// Ben burda 93 ile başlayanları alıp bide büyükten küçüğe sıralama yapmak istiyorum nasıl yapabilirim
?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (8)
function customArray($array /* Dize */,$howDo /* eşlecek veri ilk 2 harf */,$ex = "equal" /* Karşılaştırma İçin Farklı Türler {equal,equal_big,equal_small,small,big} */)
{
$c = 0;
$new;
$ex = strtolower($ex);
foreach ($array as $key => $deger) {
if ($ex == "equal"){
if(substr($array[$key], 0,2) == $howDo){
$new[$c] = $deger;
$c = $c+1;
}
}elseif($ex == "equal_big") {
if(substr($array[$key], 0,2) >= $howDo){
$new[$c] = $deger;
$c = $c+1;
}
}elseif($ex == "equal_small") {
if(substr($array[$key], 0,2) <= $howDo){
$new[$c] = $deger;
$c = $c+1;
}
}elseif ($ex == "small") {
if(substr($array[$key], 0,2) < $howDo){
$new[$c] = $deger;
$c = $c+1;
}
}elseif ($ex == "big") {
if(substr($array[$key], 0,2) > $howDo){
$new[$c] = $deger;
$c = $c+1;
}
}
}
return $new;
}
Kolaylık Olsun Diye Fonksiyon Tanımladım Buyur.
Evet bende buna benzer yaptım sonra ama asıl merak ettiğim bununla alakalı bir php fonksiyonu var mı diye.
biraz saçma bir çözüm olabilir ama çalışıyor eger 93 ile başlayıp digerlerinide almak isterseniz >= yapabilirsiniz koşulu
//verimizin başlangıcı ilk 2 harf
$start = 93;
$new;
// yeni arrayımız
$c = 0;
//yeni array key başlangıc
foreach ($arr as $key => $deger) {
//substr ile ilk 2 harfi alıyoruz
if(substr($arr[$key], 0,2) == $start /* başlayanları alıyoruz */){
$new[$c] = $deger;
//yeni arrayımıza atıyoruz bu verileri
$c = $c+1;
//array keyimizi 1 artırıyoruz
}
}
sort($new);
//kücükten büyüge
print_r($new);
Bide sadece başı 93 olanları ayrı bir diziye atmak istiyorum o nasıl olacak?
$arr = array(
99000123,
99000124,
99000125,
99000126,
99000127,
99000128,
99000129,
93000119,
93000159
);
//küçükten büyüge sıraladık tam tersi için rsort()
sort($arr);