k01ken’s b10g

He110 W0r1d!

PHPのempty関数に色んな値を入れた時の挙動

開発環境は、Windows 7 Professional(32bit)+XAMPP v3.22+PHP 7.1.7。

isset関数の挙動を調べたときに、empty関数はどうなのだろうと思って調べました。

<?php
	$val = null;
	$val2 = "ok";
	$val3 = false;
	$val4 = [];
	$val5 = ["test" => null];
	$val6 = "";
	$val7 = "ok";
	unset($val7);
	$val8 = -1;
	$val9 = 0;
	$var10 = ["fruits" => "orange"];

	if(!empty($val)){
		echo "true";
	}else{
		echo "false";
	}

	echo "<br>";

	if(!empty($val2)){
		echo "true";
	}else{
		echo "false";
	}

	echo "<br>";

	if(!empty($val3)){
		echo "true";
	}else{
		echo "false";
	}

	echo "<br>";

	if(!empty($val4)){
		echo "true";
	}else{
		echo "false";
	}

	echo "<br>";

	if(!empty($val5["test"])){
		echo "true";
	}else{
		echo "false";
	}


	echo "<br>";

	if(!empty($val6)){
		echo "true";
	}else{
		echo "false";
	}

	echo "<br>";

	if(!empty($val7)){
		echo "true";
	}else{
		echo "false";
	}

	echo "<br>";

	if(!empty($val8)){
		echo "true";
	}else{
		echo "false";
	}

	echo "<br>";

	if(!empty($val9)){
		echo "true";
	}else{
		echo "false";
	}

	echo "<br>";

	if(!empty($var10["hoge"])){
		echo "true";
	}else{
		echo "false";
	}
?>

実行結果
f:id:k01ken:20180503164916p:plain

空の配列や空文字、null,false,unsetで削除した変数,0,存在しない配列のキーはすべて、偽となって、-1は偽にはならないようです。
真偽判定はisset関数よりもempty関数を用いたほうが使い勝手が良さそう。


参考リンク

PHP: empty - Manual