İki Dizi Arasında Anahtar ve Değer Kuralı Belirleyerek Fark Bulma

Not:

1-) Fonksiyon içinde kural sorgularken değerleri aynıysa “==” , hem değerleri hem anahtarları aynıysa “===” kullanılır.

2-) array_diff_uassoc anahtar ve değer farkını birlikte işlerken, array_udiff sadece değer farkını işler.

Aşağıda anahtar isimleri adi,yas,soyadi olan değer örnekleri işlenmiştir.

array_diff_uassoc

<?php
$dizi1 = array("adi" => "Mehmet","yas" => "30", "soyadi" => "Ulusan");
$dizi2 = array("adi" => "Mehmet", "soyadi" => "Ulutan","30");
$cikti = array_diff_uassoc($dizi1, $dizi2, function ($d1,$d2){
 if($d1 === $d2){ /* hem değerleri hem anahtarları aynı olursa*/ 
 return false; /*aynı olanları yazdırmasın istiyoruz*/ 
 }else{ 
 return true; /* kurala göre farklı olanları döndürüyoruz */ 
 } 
});

print_r($cikti);

?>

Çıktısı

Array( [yas] => 30 [soyadi] => Ulusan )

Yukarıki Çıktının Sebebi
1.Diger dizide yas anahtarı yok idi
2.Diğer dizide soyadinin değeri farklı idi

array_udiff

<?php
$dizi1 = array("adi" => "Mehmet","yas" => "30", "soyadi" => "Ulusan");
$dizi2 = array("adi" => "Mehmet", "soyadi" => "Ulutan","30");
$cikti = array_udiff($dizi1, $dizi2, function ($d1,$d2){
 if($d1 === $d2){ /* hem değerleri hem anahtarları aynı olursa*/ 
 return false; /*aynı olanları yazdırmasın istiyoruz*/ 
 }else{ 
 return true; /* kurala göre farklı olanları döndürüyoruz */ 
 } 
});

print_r($cikti);

?>

Çıktısı

Array([soyadi] => Ulusan)

Yukarıki Çıktının Sebebi
1.Diğer dizide soyadinin değeri farklı idi
2.Diğer dizide yas anahtarı yok idi ama bu fonksiyon anahtara değil değere baktığı için 30lar eşleşip yok oldu.

Aktif Menüyü Vurgulamak

<style>
.aktif{background-color:rgba(0,0,0,0.1)}
</style>
<ul class="menu" >
	<?php
        $site = explode('/',$_SERVER['PHP_SELF']);
        $say = count($site);
        $sayfa = $site[$say-1];
	?>
    <li><a class="<?php echo ($sayfa=='index.php')?'aktif':'';?>" href="index.php">Anasayfa</a></li>
    <li><a class="<?php echo ($sayfa=='test.php')?'aktif':'';?>" href="test.php">Test</a></li>
</ul>

 

Zincirleme ve Kısa Sınıf Kullanımı

Static ile kısa kullanım yöntemi

<?php 
class durgun{
    static function birlestir($isim,$soyisim) {
    	echo $isim.' '.$soyisim;
    }
}

durgun::birlestir("Acun","Ilıcalı");
?>

Public ile zincirleme kullanım yöntemi

<?php class genel {
    public $adi;
    public $soyadi;
    public function adi($adi) {
        $this->adi = $adi;
        return $this;
    }
    public function soyadi($soyadi) {
        $this->soyadi = $soyadi;
        return $this;
    }
    public function birlestir() {
        echo $this->adi.' '.$this->soyadi;
    }
    
}
$b=new genel;
$b->adi('Acun')->soyadi('Ilıcalı')->birlestir();
?>

 

Direkt veya Süreli Yönlendirme

Normal Direkt Yönlendirme

<?php header('Location: /index.php'); ?>

Süreli Yönlendirme

<?php 
function sureliyonlendir($url,$saniye){
	$mesaj="$saniye saniye sonra $url sitesine yönlendirileceksiniz.<br>";
	$mesaj.="Eğer beklemek istemiyorsanız <a href=\"$url\">buraya tıklayınız</a>";
	return header("refresh:$saniye;url=$url").die($mesaj);
}

sureliyonlendir("index.php",3);
?>

 

Dizilerde Aynı Olan veya İstenen Verileri Silme ve Sırasını Düzenleme

Dizideki benzer isimleri silme işlemi

<?php 
$dizi=array('armut','elma','portakal','elma','portakal','kivi','armut');
$sonuc=array_unique($dizi);
print_r($sonuc);
/*Çıktısı
Array ( [0] => armut [1] => elma [2] => portakal [5] => kivi )
*/
?>

Dizideki istenen isimleri silme işlemi

<?php
$dizi=array('armut','elma','portakal','elma','portakal','kivi','armut');
$cikarilacak=array("elma","armut");
$sonuc=array_diff($dizi,$cikarilacak);
print_r($sonuc);
/*Çıktısı
Array ( [2] => portakal [4] => portakal [5] => kivi )
*/
?>

Dizideki sıralama(indis)leri düzenleme işlemi

<?php 
$dizi=Array(2 => "portakal",4 => "portakal", 5 => "kivi");
$sonuc=array_values($dizi);
print_r($sonuc); 
/*Çıktısı
Array ( [0] => portakal [1] => portakal [2] => kivi )
*/
?>

Anlık Arama

<?php if(isset($_POST["aranan"])){//ajax sorgu sonucu başılyor
	echo '<iframe src="http://www.sahibinden.com/kelime-ile-arama?query_text='.$_POST["aranan"].'" width="100%" height="100%" frameborder="0"></iframe>';
}else{
//sayfamızın ilk yüklemesi başlıyor
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf8"> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){
	$(".kelime").focus();//ok tuşları için
	$(".kelime").keyup(function(){
		$("#sonuc").html('');//sonuç divini temizle
		var arama = $(this).val();//arama değerini al
		$.ajax({
			type: "POST",
			url: "index.php",/*burayı bu dosyanın adı ile değiştiriniz*/
			data: "aranan="+arama,
			success: function(data){
				$("#sonuc").html(data);
			}
		});
	});
}); 
</script>
<input type="text" class="kelime" placeholder="Birşey mi aradınız?" style="width:100%"><div id="sonuc"></div>
<?php } ?>

 

WordPress Arama Algoritması

Sizler için wordpress arama algoritmasını analiz edip sistemin nasıl çalıştığını göstermek için mini bir fonksiyon hazırladım.

<?php 
header('Content-Type: text/html; charset=utf-8');
function arama($veri,$limit){
 mb_internal_encoding("UTF-8");
 $limit=" LIMIT ".$limit;
 if(!empty($veri))
 $q=mysql_real_escape_string(implode(" ",array_unique(array_filter(array_map('trim',explode(',',mb_strtolower(stripslashes($veri))))))));
 $sql="SELECT * FROM makale 
 WHERE baslik LIKE '%".$q."%' OR icerik LIKE '%".$q."%'
 ORDER BY (
 CASE 
 WHEN baslik LIKE '%".$q."%' THEN 1 
 WHEN icerik LIKE '%".$q."%' THEN 2 
 ELSE 3
 END
 ),id DESC ".$limit;
 return $sql;
}
echo arama("php",10);
/*Çıktısı
SELECT * FROM makale 
WHERE baslik LIKE '%php%' OR icerik LIKE '%php%' 
ORDER BY ( CASE WHEN baslik LIKE '%php%' THEN 1 WHEN icerik LIKE '%php%' THEN 2 ELSE 3 END ),id DESC 
LIMIT 10
*/
?>