Sorgudan dönen dizideki verileri süzme
Merhaba Arkadaşlar.
Elimde aşağıdaki gibi bir tablo var.
AdSoyad | Telefon | Gorev |
---|---|---|
Ali | 0532xxxxxxxx | Muhasebeci |
Veli | 0533xxxxxxxx | Muhtar |
Tayfun | 0534xxxxxxxx | Yazılımcı |
Orhan | 0535xxxxxxxx | Muhtar |
Mehmet | 0536xxxxxxxx | Aşçı |
Efe | 0537xxxxxxxx | Muhasebeci |
Uzak sunucu bana her halükarda verinin tümünü dizi olarak veriyor.
Bir sebepten SQL WHERE
kullanamam.
$sorgu = "SELECT AdSoyad, Telefon, Gorev FROM tablo WHERE Gorev = 'Muhasebeci'";
ya da
$sorgu = "SELECT AdSoyad, Telefon, Gorev FROM tablo WHERE Gorev = 'Muhasebeci' or Gorev = 'Muhtar'";
gibi sorgu yapamam. Bu işleri PHP tarafında yapmak zorundayım.
$sorgu = "SELECT AdSoyad, Telefon, Gorev FROM tablo";
sorgusundan dönen dizide görevi muhasebeci veya muhasebeci, muhtar olan kişileri süzmem gerekiyor.
<?php
$Gorevler = 'Muhasebeci';
$liste = array_filter($result,function($deger)use ($Gorevler) {
return $deger['Gorev']==$Gorevler;
});
print_r($liste);
?>
şeklinde muhasebecileri listeledim ama $Gorevler
değişkeni POST ile gönderiliyor.
Dolayısıyla tek gorev de gelebilir, çok görev de.
Dediğim gibi SQL WHERE
kullanamam. PHP
ile yapmak durumundayım.
Özetle, Array'da arama ya da Array filtreleme, süzme gibi işlemleri nasıl yaparım?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
$Gorevler = 'Muhasebeci,Muhtar'; // çekmek istediğin görevlerin arasına virgül koyarak yazarsan
$Gorevler = explode(',', $Gorevler); // buradada görevleri virgülden ayırarak array e dönüştürüp
$liste = array_filter($result,function($deger) use ($Gorevler){
$list = [];
foreach($Gorevler as $gorev){
if($deger['Gorev'] == $gorev){
array_push($list, $deger);
}
}
return $list;
});
echo "<pre>";
print_r($liste);
echo "</pre>";