こんにちはフロントエンドエンジニアのまさにょんです!
今回は、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!
神聖グンマー帝国の逆襲🔥
神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!