Giriş yap

PHP'de array_key_exists() Fonksiyonu
PHP 4PHP 5PHP 7

Dizi içerisinde belirtilen anahtarın olup olmadığını kontrol eder.

Yapısı (Syntax)array_key_exists ( mixed $key , array $array ) : bool

Parametreler

  • $key mixed
    Kontrol edilecek anahtarın adı
  • $array array
    Kontrol edilecek dizi

Dönen Değer

boolean - Kontrol edilen anahtar dizi içerisinde var ise TRUE yok ise FALSE döner.

NOT
İç içe dizilerde bu fonksiyon işe yaramamaktadır.

Örnekler

En basit haliyle örnek vermek gerekirse;

<?php

$dizi = [
    'ad' => 'Tayfun',
    'soyad' => 'Erbilen'
];

if ( array_key_exists('soyad', $dizi) ){
    echo '$dizi içerisinde "soyad" anahtarı bulunuyor';
}

?>

Eğer dizi değeri NULL ise isset() ile kontrol etmek doğru bir kontrol olmaz, zira NULL değerli kontrollerde isset() FALSE değeri döndürecektir.

<?php

$dizi = [
    'ad' => 'Tayfun',
    'soyad' => 'Erbilen',
    'yas' => NULL
];

var_dump(isset($dizi['yas'])); // Çıktı: bool(false)
var_dump(array_key_exists('yas', $dizi)); // Çıktı: bool(true)

?>

Ayrıca objelerinde kontrolünü yapabiliyorsunuz. Sınıf içinde private ya da protected olarak tanımlanmadığı sürece kontrolü yapılabilir ancak php tarafından 2. parametrenin her zaman array olması öneriliyor. Bu gibi durumlarda en doğru sonuç için property_exists() fonksiyonunu kullanın.

<?php

class Test
{

    private $test1;
    protected $test2;
    public $test3;
    public $test4 = "Linux";
    
}

$php = new Test();

var_dump(array_key_exists('test1', $php)); // Çıktı: bool(false)
var_dump(array_key_exists('test2', $php)); // Çıktı: bool(false)
var_dump(array_key_exists('test3', $php)); // Çıktı: bool(true)
var_dump(array_key_exists('test4', $php)); // Çıktı: bool(true)

?>

İç içe dizilerde fonksiyon işlevini yerine getirmemektedir. Bunun için kendiniz aşağıdaki gibi bir alternatif fonksiyon yazabilirsiniz.

<?php

function _array_key_exists($cur_key, $arr){
    if ( array_key_exists($cur_key, $arr) )
        return true;
    else
        foreach ($arr as $key => $val)
            if (is_array($val)) return _array_key_exists($cur_key, $val);
}

$arr = [
    'ad' => 'tayfun',
    'soyad' => 'erbilen',
    'a' => [
        'b' => [
            'c' => 'd'
        ]
    ]
];

echo _array_key_exists('c', $arr); // Çıktı: 1

tayfunerbilen
151 gün önce eklendi.
Github'da Düzenle