1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPデフォルト値設定の手法

Posted at

普通に設定

複数行必要、長い

$default_value = true;
$value         = false;

$prop = $default_value;
if (isset($value)) {
	$prop = $value;
}
var_dump($prop); // false

3項演算子を使う

1行で書けるものの、$valueを2回記述するのでびみょい。

$default_value = true;
$value         = false;

//	3項演算子
$prop = isset($value) ? $value : $default_value;
var_dump($prop); // false

Null合体演算子(強そう)を使う

PHP5.3以上ならNull合体演算子もどきこと、?:演算子が使えます。
真のNull合体演算子??はPHP7までお預け。

$default_value = true;
$value         = false;

//	Null合体演算子
#	true/falseで判定。PHP5.3以上で動作
$prop = $value ?: $default_value;
var_dump($prop); // true

#	null/それ以外で判定。PHP 7.0以上で動作
$prop = $value ?? $default_value;
var_dump($prop); // false

両者の違い

演算子 比較条件 未定義変数
?: 真 / 偽 エラー
?? not null / null

?:は真偽を含む変数では注意が必要であったり、
未定義変数が扱えないのでisset()?...の代用としては使えません。

無いなら作ればいいじゃない

//	自作関数で何とかする
function exists(&$value, $default_value = '') {
	return isset($value) ? $value : $default_value;
}

$default_value = true;
$value         = false;

$props = exists($value, $default_value);
var_dump($props); // false

PHP7がメジャーになってきたら??使えるので楽になりそうです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?