[php]if文で変数や値を指定した場合の挙動8つ

php

phpで「変数が空の場合は」とかの処理を行う時にif文に直接変数を入れて判定したりしますが
配列を入れた場合とかの挙動が気になったので、まとめてみました。

挙動確認

null

$null_value = null;
if ($null_value) {
  echoLine("null_value:true");
} else {
  echoLine("null_value:false");
}

// null_value:false

nullはfalseになります。

空文字

$empty = '';
if ($empty) {
  echoLine("empty:true");
} else {
  echoLine("empty:false");
}

// empty:false

空文字(”)はfalseになります。

文字列の変数

$hoge_str = 'hoge';
if ($hoge_str) {
  echoLine("string:true");
} else {
  echoLine("string:false");
}

// string:true

文字列はtrueになります。

空配列

$empty_array = array();
if ($empty_array) {
  echoLine("empty_array:true");
} else {
  echoLine("empty_array:false");
}

// empty_array:false

空配列はfalseになります。

値が入っている配列

$hoge_array = array('apple', 'greap', 'peach');
if ($hoge_array) {
  echoLine("hoge_array:true");
} else {
  echoLine("hoge_array:false");
}

// hoge_array:true

ひとつでも要素があればtrueになります。

数値(正数)

if (1) {
  echoLine("1:true");
} else {
  echoLine("1:false");
}

// 1:true

1はtrue。

0(ゼロ)

if (0) {
  echoLine("0:true");
} else {
  echoLine("0:false");
}

// 0:false

0はfalse。

数値(負数)

if (-1) {
  echoLine("-1:true");
} else {
  echoLine("-1:false");
}

// -1:true

-1はtrueになります。

表にすると

empty(”)null‘hoge’array()array(‘apple’)10-1
falsefalsetruefalsetruetruefalsetrue

終わりに

ほとんど思った通りでしたが
-1とか負の数はtrueなんですね…!
気をつけていきます…!

チェックしたコード全体

<?php

function echoLine ($output) {
  echo $output."\n";
}

$empty = '';
$null_value = null;
$hoge_str = 'hoge';
$empty_array = array();
$hoge_array = array('apple', 'greap', 'peach');

if ($empty) {
  echoLine("empty:true");
} else {
  echoLine("empty:false");
}

if ($null_value) {
  echoLine("null_value:true");
} else {
  echoLine("null_value:false");
}

if ($hoge_str) {
  echoLine("string:true");
} else {
  echoLine("string:false");
}


if (1) {
  echoLine("1:true");
} else {
  echoLine("1:false");
}

if (0) {
  echoLine("0:true");
} else {
  echoLine("0:false");
}

if (-1) {
  echoLine("-1:true");
} else {
  echoLine("-1:false");
}

if ($empty_array) {
  echoLine("empty_array:true");
} else {
  echoLine("empty_array:false");
}

if ($hoge_array) {
  echoLine("hoge_array:true");
} else {
  echoLine("hoge_array:false");
}

コメント

タイトルとURLをコピーしました