PHPのFalseが引き起こした問題は、会社に100万ドルの損失をもたらすところだった.

2354 ワード

PHPのFalseが引き起こした問題は、会社に100万ドルの損失をもたらすところだった.
一、シーンの説明
先週、私は金融会社の同級生で、彼はオンラインでBugと書いて、もう少しで会社に百万の損失をもたらすところだった.幸いにも彼はタイムリーにこの問題を発見して修復した.これはPHP中のemptyによる問題である.彼はempty関数を用いてFalseのパラメータを判断した.彼の正常な論理理解によれば、次のコードはYesを出力します.しかし、結果は逆だった.
$arr['is_default'] = false;

if (!empty($arr['is_default'])) {
    echo "Yes";
}

しかし、このBugによる問題は、タイムリーに解決された.しかし、生産環境に公開されると、大きな損失をもたらす可能性があります.そのため、これは私たちがプログラミングの中で、生産環境に発表された後に取り返しのつかない損失をもたらさないように、多くの細部に注意しなければならないことを示しています.
二、PHPにおけるempty関数がFalseを返す場合を挙げる
1、' '空白文字列
$arr['is_default'] = "";

if (empty($arr['is_default'])) {
    echo "Yes";
} else {
	echo  "No";
}

2、0整数ゼロ
$arr['is_default'] = 0;

if (empty($arr['is_default'])) {
    echo "Yes";
} else {
	echo  "No";
}

//   
Yes

3、0.0浮動小数点数ゼロ

$arr['is_default'] = 0.0;

if (empty($arr['is_default'])) {
    echo "Yes";
} else {
	echo  "No";
}

//   
Yes

4、"0"文字列ゼロ
arr['is_default'] = "0";

if (empty($arr['is_default'])) {
    echo "Yes";
} else {
	echo  "No";
}

//   
Yes

5、 null
$arr['is_default'] = null;

if (empty($arr['is_default'])) {
    echo "Yes";
} else {
	echo  "No";
}

//   
Yes

6、 false
$arr['is_default'] = false;

if (empty($arr['is_default'])) {
    echo "Yes";
} else {
	echo  "No";
}

//   
Yes

7、array()空の配列
$arr['is_default'] = [];

if (empty($arr['is_default'])) {
    echo "Yes";
} else {
	echo  "No";
}

//   
Yes

8、$var宣言に値が割り当てられていない変数
$var;
$arr['is_default'] = $var;

if (empty($arr['is_default'])) {
    echo "Yes";
} else {
	echo  "No";
}

//   
Yes

三、考える
PHPは弱い言語として、コードを書くとき、比較的気ままになるかもしれません.しかし、性に伴うリスクは高いかもしれません.だから、プログラミングするときは、多くの言語の詳細に注意しなければなりません.