键 07 和 08 的 PHP 数组异常
在 PHP 数组中遇到键 07 和 08 的异常数组行为,定义如下:
<code class="php">$months[01] = 'January'; $months[02] = 'February';</code>
尝试使用 print_r($months) 打印数组时,缺少键 07 和 08,而出现 9 月,键值为 0。
原因和解决方案
出现不规则现象是因为以 0 开头的数字键在 PHP 中被解释为八进制值。这意味着 07 被解析为整数 7,08 被解析为 8。要避免此问题,只需从键中删除前导 0。
<code class="php">$months[7] = 'July'; $months[8] = 'August';</code>
这将确保正确识别键并且数组的行为符合预期。
示例
以下代码演示了使用前导 0 与不使用前导 0 之间的区别:
<code class="php">echo 07; // prints 7 echo 010; // prints 8 echo 7; // prints 7 echo 10; // prints 10</code>
附加说明
此行为通常在指定 UNIX 文件权限时使用:
<code class="php">chmod("myfile", 0660);</code>
但是,很少有必要用于其他目的。 PHP 手册提供了有关数字键和八进制值的更多详细信息。
以上是为什么具有键 07 和 08 的 PHP 数组会表现出意外行为?的详细内容。更多信息请关注PHP中文网其他相关文章!