2024 日本 PHP 研討會

ArrayAccess::offsetExists

(PHP 5, PHP 7, PHP 8)

ArrayAccess::offsetExists判斷位移是否存在

說明

public ArrayAccess::offsetExists(mixed $offset): bool

判斷位移是否存在。

當在實作 ArrayAccess 的物件上使用 isset()empty() 時,會執行此方法。

注意:

當使用 empty() 時,只有在 ArrayAccess::offsetExists() 返回 true 的情況下,才會呼叫 ArrayAccess::offsetGet() 並檢查是否為空。

參數

offset

要檢查的偏移量。

回傳值

成功時返回 true,失敗時返回 false

注意:

如果返回的不是布林值,則會將回傳值轉換為 布林值

範例

範例 #1 ArrayAccess::offsetExists() 範例

<?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
"執行 obj::offsetExists()\n";
var_dump(isset($obj["foobar"]));

echo
"\n執行 obj::offsetExists() 和 obj::offsetGet()\n";
var_dump(empty($obj["foobar"]));

echo
"\n執行 obj::offsetExists(),*不會* 執行 obj:offsetGet(),因為沒有東西可以獲取\n";
var_dump(empty($obj["foobaz"]));
?>

以上範例的輸出會類似於

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)

新增筆記

使用者貢獻的筆記

此頁面沒有使用者貢獻的筆記。
To Top