<?php // 报告所有错误 ini_set('display_errors', 'On'); error_reporting(-1); $arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; $index = 5 / 2; echo $index; // 2.5 echo PHP_EOL; // Deprecated: Implicit conversion from float 2.5 to int loses precision echo $arr[$index]; // 2 //========== 总结 ==========// // 1、数组的key为int类型,操作数组元素时使用浮点数作为key就会发生隐式转换且报Deprecated错误(如上面的浮点数2.5转为int类型)。
<?php // 报告所有错误 ini_set('display_errors', 'On'); error_reporting(-1); function foo(bool $var): void { echo var_export($var, true) . PHP_EOL; } // 实参和形参的数据类型一致的情况 foo(true); // true foo(false); // false // 实参和形参的数据类型不一致的情况(可以清楚地看到,实参被转成了形参声明的数据类型) foo(0); // false foo(9527); // true foo(''); // false foo('草泥马'); // true //========== 总结 ==========// // 1、如果形参声明了数据类型,但实参的数据类型与形参声明的不一致,就会发生类型转换(转为形参声明的数据类型)。 // 2、发生类型转换仅限在不开启严格模式“declare(strict_types=1)”情况下,如果开启了严格模式就会报“Fatal error: Uncaught TypeError”。
Copyright © 2024 码农人生. All Rights Reserved