首页 > 解决方案 > 具有混合键的 PHP 关联数组中缺少一个值

问题描述

在研究 PHP 数组时,我遇到了一个相当古玩的例子:

<?php
$example = array(
        "1"=>"A", 1=>"B", "C", 2=>"D"
);
var_dump($example);
?>

我期待这段代码显示三个值:B、C 和 D。相反,只打印 B 和 D:

array(2) {
  [1]=>
  string(1) "B"
  [2]=>
  string(1) "D"
}

我知道 A 被 B 替换,因为键(字符串)“1”实际上被转换为(int)1。

我知道整数键是通过将 1 添加到数组的最后定义的整数键来创建的。值 C 是否被 D 替换,因为在创建数组时,下一个可能分配给 C 的整数键是 1+1 = 2 ?

标签: phparrays

解决方案


正是如此。您可以通过将 D (顺便记住引号)分配给不同的键来测试它:

<?php 
    $example = [ "A", "B", 1 => "C" ];
    print_r($example);

<?php
    $example = [ "1" => "A", "1" => "B", "C", 3 => "D" ]; 
    print_r($example);

结果:

Array
(
    [0] => A
    [1] => C
)
Array
(
    [1] => B
    [2] => C
    [3] => D
)

推荐阅读