lostyazilim
tr.link

dizi içindeki eleman değerini tarihe göre sıralama

7 Mesajlar 1.509 Okunma
lstbozum
tr.link

melihonline melihonline WM Aracı Kullanıcı
  • Üyelik 24.11.2018
  • Yaş/Cinsiyet 38 / E
  • Meslek Bilgisayar Teknikeri
  • Konum Antalya
  • Ad Soyad M** K**
  • Mesajlar 91
  • Beğeniler 8 / 7
  • Ticaret 0, (%0)
Merhaba arkadaşlar. Yardımınıza ihtiyacım var. Bir dizi içerisinde bilgilerim var. Ben onları dizinin içindeki tarih anahtarının değerine göre büyükten küçüğe sıralama yaptırmam gerekiyor. Aşağıda dizi içeri bulunuyor.

Örnek çıktı olarak şu şekilde olacak. En yakın tarih 2011-01-13 bu olduğu için bu tarihin olduğu isim ile birlikte ilk sıraya bunu koyacak. İkinci en yakın tarih 2009-04-16. Bunu da ikinci sıraya koyacak. Bu şekilde en sona kadar sıralama yapacak.

1
ADI: Mustafa
TARİH: 2011-01-13
--------
2
ADI: Yasemin
TARİH: 2009-04-16

Array
(
[0] => Array
(
[tarih] => 2006-08-31
[adi] => Melih
)

[1] => Array
(
[tarih] => 2007-11-29
[adi] => Kaya
)

[2] => Array
(
[tarih] => 2008-08-22
[adi] => Ahmet
)

[3] => Array
(
[tarih] => 2002-10-02
[adi] => Süleyman
)

[4] => Array
(
[tarih] => 2005-09-11
[adi] => Selçuk
)

[5] => Array
(
[tarih] => 2005-01-17
[adi] => Recep
)

[6] => Array
(
[tarih] => 2008-02-28
[adi] => Hakan
)

[7] => Array
(
[tarih] => 2005-08-03
[adi] => Murat
)

[8] => Array
(
[tarih] => 2011-01-13
[adi] => Mustafa
)

[9] => Array
(
[tarih] => 2008-11-26
[adi] => Burak
)

[10] => Array
(
[tarih] => 2009-04-16
[adi] => Yasemin
)
)
 

 

wmaraci
reklam

emreyvz emreyvz .NET Core & Angular & PHP Kullanıcı
  • Üyelik 19.04.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İstanbul Anadolu
  • Ad Soyad E** Y**
  • Mesajlar 691
  • Beğeniler 110 / 250
  • Ticaret 24, (%100)

$arr = array( array( "tarih" => "2006-08-31", "adi" => "Melih", ), array( "tarih" => "2007-11-29", "adi" => "Kaya", ), array( "tarih" => "2002-10-02", "adi" => "Süleyman", ));
array_multisort( array_column($arr, "tarih"), SORT_ASC, $arr );


Kolay gelsin.
TheMucit melihonline

kişi bu mesajı beğendi.

melihonline melihonline WM Aracı Kullanıcı
  • Üyelik 24.11.2018
  • Yaş/Cinsiyet 38 / E
  • Meslek Bilgisayar Teknikeri
  • Konum Antalya
  • Ad Soyad M** K**
  • Mesajlar 91
  • Beğeniler 8 / 7
  • Ticaret 0, (%0)
Çok teşekkürler hocam. Elinize sağlık. :)

emreyvz adlı üyeden alıntı


$arr = array( array( "tarih" => "2006-08-31", "adi" => "Melih", ), array( "tarih" => "2007-11-29", "adi" => "Kaya", ), array( "tarih" => "2002-10-02", "adi" => "Süleyman", ));
array_multisort( array_column($arr, "tarih"), SORT_ASC, $arr );


Kolay gelsin.
 

 

melihonline melihonline WM Aracı Kullanıcı
  • Üyelik 24.11.2018
  • Yaş/Cinsiyet 38 / E
  • Meslek Bilgisayar Teknikeri
  • Konum Antalya
  • Ad Soyad M** K**
  • Mesajlar 91
  • Beğeniler 8 / 7
  • Ticaret 0, (%0)
Merhabalar. Şu şekil bi hata verdi. Neyden kanaklı olabilir acaba?

Fatal error: Uncaught ValueError: Array sizes are inconsistent in C:\xampp\htdocs\site\kisi.php:387 Stack trace: #0 C:\xampp\htdocs\site\kisi.php(387): array_multisort(Array, 3, Array) #1 {main} thrown in C:\xampp\htdocs\themovie\kisi.php on line 387

387. satır da şu şekilde

array_multisort( array_column($OyuncuBuyKucSira, "tarih"), SORT_DESC, $OyuncuBuyKucSira );

emreyvz adlı üyeden alıntı


$arr = array( array( "tarih" => "2006-08-31", "adi" => "Melih", ), array( "tarih" => "2007-11-29", "adi" => "Kaya", ), array( "tarih" => "2002-10-02", "adi" => "Süleyman", ));
array_multisort( array_column($arr, "tarih"), SORT_ASC, $arr );


Kolay gelsin.
 

 

wmaraci
wmaraci

melihonline melihonline WM Aracı Kullanıcı
  • Üyelik 24.11.2018
  • Yaş/Cinsiyet 38 / E
  • Meslek Bilgisayar Teknikeri
  • Konum Antalya
  • Ad Soyad M** K**
  • Mesajlar 91
  • Beğeniler 8 / 7
  • Ticaret 0, (%0)
Hocam neden hata verdiğini anladım. Dizi içindekilerin bazılarında Tarih anahtarı olmadığı için hata veriyormuş. Dizi içinde tarih anahtarı olmayanları sıralamaya katmamasını saplayabilir miyiz?

emreyvz adlı üyeden alıntı


$arr = array( array( "tarih" => "2006-08-31", "adi" => "Melih", ), array( "tarih" => "2007-11-29", "adi" => "Kaya", ), array( "tarih" => "2002-10-02", "adi" => "Süleyman", ));
array_multisort( array_column($arr, "tarih"), SORT_ASC, $arr );


Kolay gelsin.
 

 

emreyvz emreyvz .NET Core & Angular & PHP Kullanıcı
  • Üyelik 19.04.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İstanbul Anadolu
  • Ad Soyad E** Y**
  • Mesajlar 691
  • Beğeniler 110 / 250
  • Ticaret 24, (%100)

melihonline adlı üyeden alıntı

Hocam neden hata verdiğini anladım. Dizi içindekilerin bazılarında Tarih anahtarı olmadığı için hata veriyormuş. Dizi içinde tarih anahtarı olmayanları sıralamaya katmamasını saplayabilir miyiz?


Sıralama yapılacak array'ı filtreleyip tarihi olmayanları çıkararak yeni array oluşturun ve o array'ı filtrelemeyi deneyin.
 

 

melihonline melihonline WM Aracı Kullanıcı
  • Üyelik 24.11.2018
  • Yaş/Cinsiyet 38 / E
  • Meslek Bilgisayar Teknikeri
  • Konum Antalya
  • Ad Soyad M** K**
  • Mesajlar 91
  • Beğeniler 8 / 7
  • Ticaret 0, (%0)
Tarihi olmayanları komple çıkartma işi beni aştı yapamadım. Aklıma farklı yöntem geldi.

İlk önce array_key_exists ile dizi içinde tarih olup olmadığını kontrol ettirdim. Daha sonra içinde tarih olmayanlara Tarih isimli anahtar ve boş değer ekledim. Bu şekilde çözüldü sorun. :)

emreyvz adlı üyeden alıntı

Sıralama yapılacak array'ı filtreleyip tarihi olmayanları çıkararak yeni array oluşturun ve o array'ı filtrelemeyi deneyin.
 

 

wmaraci
wmaraci
Konuyu toplam 2 kişi okuyor. (0 kullanıcı ve 2 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al