v2.5.2
Giriş yap

Sorgudan dönen dizideki verileri süzme

ufukart
499 defa görüntülendi

Merhaba Arkadaşlar.

Elimde aşağıdaki gibi bir tablo var.

AdSoyadTelefonGorev
Ali0532xxxxxxxxMuhasebeci
Veli0533xxxxxxxxMuhtar
Tayfun0534xxxxxxxxYazılımcı
Orhan0535xxxxxxxxMuhtar
Mehmet0536xxxxxxxxAşçı
Efe0537xxxxxxxxMuhasebeci

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?

Cevap yaz
Cevaplar (2)
makifgokce
1120 gün önce
$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>";
ufukart
1120 gün önce

Tekrar teşekkür ederim. Sağolun.