Destek Olmak İçin

Dizi Içinde Arama Yapmak

Merhaba arkadaşlar,

Bu yazımızda PHP nin bir fonksiyonunu ele alacağız. Benim de zaman zaman ihtiyaç duyduğum bu fonksiyonun bilgileri aşağıdaki gibidir.







Fonksiyon adı : in_array();
Aldığı parametreler :
  1. Arayacağımız değer,
  2. İçinde arama yapacağımız dizi,
  3. TRUE (bunu açıklayacağım)

Fonksiyonun işlevi : Bu fonksiyon istediğiniz dizi içinde yine sizin istediğiniz bir sayı ya da kelimeyi aramaya yarar. Aradığınız sayı ya da kelime varsa TRUE değerini dönderir. Yok ise FALSE değerini dönderir. Örneklerle açıklamaya çalışalım.


"test.php" isminde bir dosya oluşturuyorum ve içine aşağıdaki kodları yazıp çalıştırıyorum.

test.php

<?php
$dizimiz = array("Adana", "Istanbul", "Kayseri", "Hatay");
if(in_array("Kayseri", $dizimiz)){
echo "Kayseri kelimesi dizi icinde var.";
}else{
echo "Kayseri kelimesi dizi icinde bulunamadi.";
}
?>

Bu dosyayı çalıştırdığımızda karşımıza çıkacak sonuç şu şekildedir. 

=>   Kayseri kelimesi dizi icinde var.

Peki üçüncü ve son parametre ne işe yarar. Bunu da açıklayalım. TRUE ifadesi ile aradığımız değerin türüne göre arama yapar. Eğer dizinizin içinde aynı değerler farklı türde ise bunları ayrıştırmak ve karıştırmamak için bu parametreyi kullanırsınız. Örnekle açıklarsam daha doğru anlaşılır olacaktır.

Yine "test.php" dosyamı açıyorum ve içine aşağıdaki kodları yazıp deniyorum.

test.php

<?php
$dizimiz = array("14", "15", "16", 16);
if(in_array(16, $dizimiz, TRUE)){
echo "Integer tipindeki 16 sayisi dizi icinde var.";
}else{
echo "Integer tipindeki 16 sayisi dizi icinde bulunamadi.";
}
?>

Öncelikle dizi içindeki ifadelere dikkat etmenizi istiyorum. Bildiğiniz gibi PHP'de çift tırnak içinde yazılan ifadeler String tipindedir. Çift tırnak olamadan yazılan sayılar ise Integer tipindedir. Bizim dizimizde iki tane 16 sayısı vardır. Ancak bir tanesi String tiptedir, diğeri de Integer tiptedir. Biz bu ikisini birbirinden ayırabilmek için in_array() fonksiyonunun üçüncü parametresini kullanırız. Eğer üçüncü parametreyi TRUE yaparsak fonksiyon bizim için aradığımız değerin türüne göre arama yapar. Aradığımız değer var ise ve türüde uyuyorsa TRUE döndürür.

Biz örneğimizde Integer tipteki 16 sayısını arattık. in_array() fonksiyonunun üçüncü parametresini de TRUE yaptık. Fonksiyon dizinin içine baktı ve iki tane 16 gördü. Üçüncü sayımızın tipine baktı ve String olduğu için bunu olumsuz olarak değerlendirdi. Son sayımızın tipi Integer olduğu için TRUE döndürdü. Ekran çıktısı şu şekilde olacaktır.

=>   Integer tipindeki 16 sayisi dizi icinde var.

Son olarak bunun sağlamasını da yapalım konuyu kapatalım. Aşağıdaki kodları "test.php" içine yazın ve çalıştırın.

test.php

<?php
$dizimiz = array("14", "15", "16");
if(in_array(16, $dizimiz)){
echo "16 sayisi dizi icinde var.";
}else{
echo "16 sayisi dizi icinde bulunamadi.";
}
?>

Gördüğünüz gibi TRUE ifadesini kaldırıp Integer 16 sayısını arattığımda fonksiyon bana TRUE değerini döndürdü. Çünkü değerin tipine bakmadan arama yaptı ve dizi içindeki 16 sayısını buldu. Bu sayının türü String olmasına rağmen in_array() fonksiyonunun üçüncü parametresini çalıştırmadığım için TRUE döndürdü.

Ekran çıktısı şu şekilde olur.

=>   16 sayisi dizi icinde var.


Görüşmek üzere

Yorumlar