PHP 的數字和字串比對陷阱

似乎沒看過其他語言有這麼突破天際的設計(如果有,請告訴我,讓我漲姿勢)

php > var_dump("11 or 1=1/*" == 11);
bool(true)

這種可以改成用 ===

php > var_dump("11 or 1=1/*" === 11);
bool(false)

不過還有這種陷阱

php > var_dump(in_array("11 or 1=1/*", [9, 11]));
bool(true)

可以改成

php > var_dump(in_array("11 or 1=1/*", ["9", "11"]));
bool(false)

// or

php > var_dump(in_array("11 or 1=1/*", [9, 11], true));
bool(false)

這是實際有人踩到的陷阱,不過我不知道寫的人背景是一直都是寫 PHP 的還是其他