PHPのFalseが引き起こした問題は、会社に100万ドルの損失をもたらすところだった.
2354 ワード
PHPのFalseが引き起こした問題は、会社に100万ドルの損失をもたらすところだった.
一、シーンの説明
先週、私は金融会社の同級生で、彼はオンラインで
しかし、この
二、PHPにおけるempty関数がFalseを返す場合を挙げる
1、
2、
3、
4、
5、
6、
7、
8、
三、考える
PHPは弱い言語として、コードを書くとき、比較的気ままになるかもしれません.しかし、性に伴うリスクは高いかもしれません.だから、プログラミングするときは、多くの言語の詳細に注意しなければなりません.
一、シーンの説明
先週、私は金融会社の同級生で、彼はオンラインで
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は弱い言語として、コードを書くとき、比較的気ままになるかもしれません.しかし、性に伴うリスクは高いかもしれません.だから、プログラミングするときは、多くの言語の詳細に注意しなければなりません.