Yazılım Geliştirici Güncesi

Php ile array i özel key sirasina göre sıralamak

Temmuz 30, 2010 | In: Salata

İnternette biraz araştırdım bir sonuç bulamadım yapmak istediğim şey şu

$veri =  array(1=>’zoo’,2=>’bar’,3=>’foe’);

elimizde böyle bir veri var  biz bunun ekrana

$sira = array(3,1,2);

gibi bir sıra ile yazdırılmasını istiyoruz ama bunu nasıl yapacak anlayacak?

not: bu veri elime mysql de ” where id in(3,1,2) ” sonucunda geliyor ben 3,1,2 ye göre sıralamak istiyorum ama mysql

123 veya 321 diye sıralayabileceğimi söylüyor onu yapmak için 20 elemanım varsa 20 defa sorgu yapıp istediğim sırayı elde edebilirim asnıl mı

foreach($sira as $key=>$val) { sql = select … where id = $val ; row=fetch_assoc;  echo row; }

gibi iç içe bir döngü ile sıralanabilirdi mysql kısmından umudu kestikten sonra php ile bu işi yapmak daha kolayıma geldi

Saho class ının içerisinde recurvise bir OzelSiralama fonksiyonu üretip işi oldukça az satırla çözebildim eminim başkalarınında eninde sonunda ihtiyacı olacak işe yarayacaktır :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* Author : Sahabettin Akca @Saho
* Params : $list Array, $sort Array
*/


function OzelSiralama($icerik, $sira) {
$i = 0;
foreach ($icerik as $id => $urun) {
if ($id == $sira[$i]) {
$i++;
continue;
} else {
unset($icerik[$id]);
$icerik[$id] = $urun;
$icerik = OzelSiralama($icerik, $sira);
break;
}
}
return $icerik;
}
Paylaş ve HalayÇek: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Technorati
  • Digg
  • del.icio.us
  • YahooMyWeb
  • Taggly
  • Netvouz
  • DZone
  • ThisNext
  • MisterWong
  • Wists
  • blogmarks
  • IndiaGram
  • Internetmedia
  • Netscape
  • Reddit
  • Scoopeo
  • StumbleUpon


2 Responses to Php ile array i özel key sirasina göre sıralamak

Avatar

isa yeter

Ağustos 22nd, 2010 at 00:25

select * from uyeler where id IN (1,3,2) ORDER BY FIELD(id,1,3,2);

olayı çözecektir

Avatar

admin

Ağustos 22nd, 2010 at 23:06

eyv. isa sql için evet ama array sıralarken ben yine üsttekini kullanacağım =)

Comment Form