PHP Integer数组索引真的是数字吗?

Han*_*nky 8 php arrays indexing numbers

考虑这个例子

<?php
    $test = array("00"=>"A","B","C","D","E");
    print_r($test);
    echo "<br>";

    echo $test[0];
    echo "<br>";
    echo $test["0"];
    echo "<br>";

    echo $test["00"];
    echo "<br>";
    echo $test[00];
?>
Run Code Online (Sandbox Code Playgroud)

产量

数组([00] => A [0] => B [1] => C [2] => D [3] => E)

一个

Q1.为什么$test[0]相同$test["0"]$test[00]不是相同$test["00"]

Q2.如果Q1的答案是因为00 = 0数字,那么为什么这个数组有一个索引00和另一个索引0

Q3.如果您无法$test["00"]使用,$test[0]那么您如何知道哪个索引是数字,哪个是字符串?如果两者都只是数字

编辑

根据目前为止的答案,我脑海中还有另一个问题.这里是问题4.

Q4.为什么是if(00==0)真,if(07==7)假?(对于数组索引)

Q5.

$test = array("00"=>"A","0"=>"B","000"=>"C","0000"=>"D","00000"=>"E");
 echo $test[0];
Run Code Online (Sandbox Code Playgroud)

为什么输出是B,不应该是A?因为这是数组中的第一个元素,位于第0位

rua*_*akh 5

根据文档," 将要发生的[...] 关键演员之一"是:

包含有效整数 s的字符串将转换为整数类型.例如,键"8"实际上将存储在8下.另一方面,"08"不会被强制转换,因为它不是有效的十进制整数.

[ 链接 ]

  • 所以回答Q4是(07 == 7)是真的!但是对于数组索引,"07"!= 7 (2认同)