php中的数组键

use*_*135 4 php array-key

我正在尝试理解这段代码:

<?php 

$list = array(-10=>1, 2, 3, "first_name"=>"mike", 4, 5, 10=>-2.3); 

print_r(array_keys($list));
?> 
Run Code Online (Sandbox Code Playgroud)

输出:

Array ( [0] => -10 [1] => 0 [2] => 1 [3] => first_name [4] => 2 [5] => 3 [6] => 10 ) 
Run Code Online (Sandbox Code Playgroud)

我想知道为什么[4] => 2 and why [5] => 3我认为这是[4] => 4 and [5] => 5因为它们都在索引4和5.我对这个阵列到底发生了什么感到困惑,如果有可能,有人能指出我正确的方向,谢谢.

Mar*_*c B 6

您正在使用无密钥数组条目进行混合,因此它有点不稳定:

$list = array(
    -10 => 1   // key is -10
        => 2  // no key given, use first available key: 0
        => 3  // no key given, use next available key: 1
    "first_name" => "mike" // key provided, "first_name"
        => 4  // no key given, use next available: 2
        => 5  // again no key, next available: 3
     10 => -2.3  // key provided: use 10
Run Code Online (Sandbox Code Playgroud)

如果您没有提供密钥,PHP将从0开始分配一个密钥.如果潜在的新密钥与已分配的密钥冲突,则将跳过该潜在密钥,直到PHP找到可以使用的密钥.