PHP 7.4.0RC6 Released!

ArrayAccess::offsetExists

(PHP 5, PHP 7)

ArrayAccess::offsetExistsBir konumun mevcut olup olmadığına bakar

Açıklama

abstract public ArrayAccess::offsetExists ( mixed $konum ) : bool

Bir konumun mevcut olup olmadığına bakar.

ArrayAccess arayüzünü gerçekleyen nesneler üzerinde isset() veya empty() kullanıldığında bu yöntem çalıştırılır.

Bilginize:

empty() işlevi kullanıldığında ArrayAccess::offsetGet() çağrılır ve sadece dönen değer TRUE olduğu takdirde konumun boş olup olmadığına bakılır.

Değiştirgeler

konum

Varlığı sınanacak konum.

Dönen Değerler

Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.

Bilginize:

Dönüş değeri boolean türünde değilse tür dönüşümü yapıldıktan sonra döndürülür.

Örnekler

Örnek 1 - ArrayAccess::offsetExists() örneği

<?php
class Sınıf implements arrayaccess {
    public function 
offsetSet($konum$değer) {
        
var_dump(__METHOD__);
    }
    public function 
offsetExists($var) {
        
var_dump(__METHOD__);
        if (
$var == "filanca") {
            return 
true;
        }
        return 
false;
    }
    public function 
offsetUnset($var) {
        
var_dump(__METHOD__);
    }
    public function 
offsetGet($var) {
        
var_dump(__METHOD__);
        return 
"değer";
    }
}

$nesne = new Sınıf;

echo 
"Sınıf::offsetExists() çalışır\n";
var_dump(isset($nesne["filanca"]));

echo 
"\nSınıf::offsetExists() ve Sınıf::offsetGet() çalışır\n";
var_dump(empty($nesne["filanca"]));

echo 
"\nSınıf::offsetExists() çalışır, alınacak bir şey olmadığından Sınıf::offsetGet() çalışmaz\n";
var_dump(empty($nesne["falanca"]));
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Sınıf::offsetExists() çalışır
string(21) "Sınıf::offsetExists"
bool(true)

Sınıf::offsetExists() ve Sınıf::offsetGet() çalışır
string(21) "Sınıf::offsetExists"
string(18) "Sınıf::offsetGet"
bool(false)

Sınıf::offsetExists() çalışır, alınacak bir şey olmadığından Sınıf::offsetGet() çalışmaz
string(21) "Sınıf::offsetExists"
bool(true)

add a note add a note

User Contributed Notes 3 notes

up
6
driezasson at icloud dot com
4 years ago
Note that even though isset/empty works on classes implementing ArrayAccess, array_key_exists does not. At least not in PHP 5.3.
up
0
Martin Q
28 days ago
It seems that in PHP 7, if this method returns FALSE then offsetGet() will return NULL (in PHP 5, offsetGet() didn't first check what value offsetExists() returned).  So if your code suddenly stops working when you upgrade to PHP 7 make sure that offsetExists() returns a sensible value!
up
0
kgun ! mail ! com
9 months ago
If you care about key-strictness, you may need to use an alternative solution (maybe overriding offsetExists() in subclass(es)). So, offsetExists() acts like array_key_exists() and does not handle the key types. Here;

<?php
$array
= ['one', 'two', 3.=>'boom!'];
$arrayObject = new ArrayObject($array);
$key = '3';
var_dump(array_key_exists($key, $array)); // bool(true)
var_dump(in_array($key, array_keys($array), true)); // bool(false)
var_dump($arrayObject->offsetExists($key)); // bool(true)
var_dump(in_array($key, array_keys($arrayObject->getArrayCopy()), true)); // bool(false)

// @override;
public function offsetExists($key)
{
   
// make a strict check
   
return in_array($key, array_keys($this->getArrayCopy()), true);
}
?>
To Top