PHPでClass・Objectや連想配列のkey(プロパティ)があるか存在を確認する方法

PHP-Object-Key

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、PHPでClass・Objectや連想配列のkey(プロパティ)があるか存在を確認する方法について解説していきます。

Class・Objectや連想配列のkey(プロパティ)があるか存在を確認する方法

PHPでClass・Objectに特定のkey(プロパティ)があるか存在を確認したい場合は、property_exists() を使います。

また、連想配列に特定のkey(プロパティ)があるか存在を確認したい場合は、array_key_exists()を使います。

property_exists関数でClass・Objectや連想配列のkeyの存在を確認する

property_exists()は、オブジェクトもしくはクラスにプロパティが存在するかどうかを調べられます。

PHP-Manual記載の構文の構造は次のとおりです。

property_exists(object|string $object_or_class, string $property): bool

プロパティが存在している場合は true、存在していない場合に false、 エラー時には null を実行結果として返します。

<?php

function KeyCheck (bool $bool): void {
    if ($bool) echo 'Keyあり!' . "\n";
    else echo 'Keyなし!' . "\n";
}

$robotama = (object)[];
$robotama->id = 1;
$robotama->name = 'ロボ玉試作1号機';

// 1. property_exists(対象Object, 'key名') で、Objectのkey名の存在を確認する
$result = property_exists($robotama, 'id');

KeyCheck($result);
// Keyあり!

class Robotama {
    public $robotama_nanoda = 'ロボ玉';
    public $purupuru = true;
}

// 2. property_exists(対象Class-Instance, 'key名') で、Classのkey名の存在を確認する
$result_2 = property_exists(new Robotama(), 'purupuru');

KeyCheck($result_2);
// Keyあり!

// 3. property_exists(Class名-String, 'key名') で、Classのkey名の存在を確認する
$result_3 = property_exists('Robotama', 'purupuru');

KeyCheck($result_3);
// Keyあり!

array_key_exists関数で連想配列のkeyの存在を確認する

array_key_exists()は指定した key または index が配列にあるかどうかを調べられます。

指定した key が配列に設定されている場合array_key_exists() は true を返し、存在しない場合は false を返します。

注意点として、array_key_exists() は、最初のレベルのキーだけを捜します。

多次元配列のネストされたキーは、この関数では見つけられません。

<?php

function KeyCheck (bool $bool): void {
    if ($bool) echo 'Keyあり!' . "\n";
    else echo 'Keyなし!' . "\n";
}

$from_array = [
    'Tokyo' => '東京',
    'Saitama' => 'さいたま共和国',
];

// 4. array_key_exists('key名', 対象配列) で、連想配列のkey名の存在を確認する
// array_key_exists(string|int $key, array $array): bool

$result_4 = array_key_exists('Gunmar', $from_array);

KeyCheck($result_4);
// Keyなし!

SampleCode全文

<?php

function KeyCheck (bool $bool): void {
    if ($bool) echo 'Keyあり!' . "\n";
    else echo 'Keyなし!' . "\n";
}

$robotama = (object)[];
$robotama->id = 1;
$robotama->name = 'ロボ玉試作1号機';

// 1. property_exists(対象Object, 'key名') で、Objectのkey名の存在を確認する
$result = property_exists($robotama, 'id');

KeyCheck($result);
// Keyあり!

class Robotama {
    public $robotama_nanoda = 'ロボ玉';
    public $purupuru = true;
}

// 2. property_exists(対象Class-Instance, 'key名') で、Classのkey名の存在を確認する
$result_2 = property_exists(new Robotama(), 'purupuru');

KeyCheck($result_2);
// Keyあり!

// 3. property_exists(Class名-String, 'key名') で、Classのkey名の存在を確認する
$result_3 = property_exists('Robotama', 'purupuru');

KeyCheck($result_3);
// Keyあり!


$from_array = [
    'Tokyo' => '東京',
    'Saitama' => 'さいたま共和国',
];

// 4. array_key_exists('key名', 対象配列) で、連想配列のkey名の存在を確認する
// array_key_exists(string|int $key, array $array): bool

$result_4 = array_key_exists('Gunmar', $from_array);

KeyCheck($result_4);
// Keyなし!

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

PHP / Laravel書籍

参考・引用

  1. PHP-Manual: property_exists
  2. PHP-Manual: array_key_exists

最近の投稿