# offsetexists

ArrayAccess::offsetExists

Whether an offset exists

# 

ENTITY

<div data-wrapper="1" role="ArrayAccess">

public

</div>

<div data-wrapper="1" role="ArrayAccess">

bool

</div>

<div data-wrapper="1" role="ArrayAccess">

ArrayAccess::offsetExists

</div>

<div data-wrapper="1" role="ArrayAccess">

mixed

</div>

<div data-wrapper="1" role="ArrayAccess">

offset

</div>

Whether or not an offset exists.

This method is executed when using `isset` or `empty` on objects implementing `ArrayAccess`.

> [!NOTE]
> When using `empty` `ArrayAccess::offsetGet` will be called and checked if empty only if `ArrayAccess::offsetExists` returns ENTITY.

# 

ENTITY

`offset`  
An offset to check for.

# 

ENTITY

ENTITY

> [!NOTE]
> The return value will be casted to `bool` if non-boolean was returned.

# 

ENTITY

<div class="example">

<div class="title">

`ArrayAccess::offsetExists` example

</div>

```
<?php
class obj implements ArrayAccess {
    public function offsetSet($offset, $value): void {
        var_dump(__METHOD__);
    }
    public function offsetExists($var): bool {
        var_dump(__METHOD__);
        if ($var == "foobar") {
            return true;
        }
        return false;
    }
    public function offsetUnset($var): void {
        var_dump(__METHOD__);
    }
    #[\ReturnTypeWillChange]
    public function offsetGet($var) {
        var_dump(__METHOD__);
        return "value";
    }
}

$obj = new obj;

echo "Runs obj::offsetExists()\n";
var_dump(isset($obj["foobar"]));

echo "\nRuns obj::offsetExists() and obj::offsetGet()\n";
var_dump(empty($obj["foobar"]));

echo "\nRuns obj::offsetExists(), *not* obj:offsetGet() as there is nothing to get\n";
var_dump(empty($obj["foobaz"]));
?>

    
```

ENTITY

    Runs obj::offsetExists()
    string(17) "obj::offsetExists"
    bool(true)

    Runs obj::offsetExists() and obj::offsetGet()
    string(17) "obj::offsetExists"
    string(14) "obj::offsetGet"
    bool(false)

    Runs obj::offsetExists(), *not* obj:offsetGet() as there is nothing to get
    string(17) "obj::offsetExists"
    bool(true)

        

</div>