【问题标题】:Associative array with similar keys assignment具有相似键分配的关联数组
【发布时间】:2014-10-05 07:52:39
【问题描述】:

考虑我有具有相同键值的关联数组:

$arr = {'MessageID' =>1 ,'MessageID' =>5 , 'MessageID' => 8};

现在我希望每次调用 function foo() 都会插入一个新的键值 'MessageID'=>integer

我们如何在不覆盖其他现有键值对的情况下做到这一点?

【问题讨论】:

  • stackoverflow.com/questions/5445283/…AFAIK 的可能重复项,数组键不能重复,所以问题是,你最终是如何得到你使用的示例数组的......
  • 数组中不能有重复的键。此外,带有花括号的示例也不是有效的 php 语法。请澄清

标签: php associative-array


【解决方案1】:

与之前的许多回答者一样,您不能在 PHP 的数组中拥有具有相同字符串的键。如果你想代表每个键的多个值,我使用这样的东西:

$arr = ['MessageID' => [1, 5, 8]];

您可以使用以下代码附加到 MessageID:

$arr['MessageId'][] = 10;

然后它看起来像这样:

['MessageID' => [1, 5, 8, 10]]

这对我来说很适用于 HTTP 标头和其他基于键值的东西,但可以有多个值。

【讨论】:

    【解决方案2】:

    在 php 数组中,不能插入多个具有相同索引的值。 如果你想使用它,那么你可以通过以下方式使用它

    $MessageID = array(1,5,8);$MessageID[] = $newValue; 插入新值。

    【讨论】:

      【解决方案3】:

      你不能有一个包含重复键的数组。

      更好的实现是有一个名为 $messageIDs 的数组并将实际值保存在数组中:

      $messageIDs = array (1, 5, 8);
      

      【讨论】:

        【解决方案4】:

        正如我在 cmets 中提到的,数组中不能有重复的键。此外,带有花括号的示例也不是有效的 php 语法。

        也许你需要一个多维数组:

        $arr = [['messageID'=>1],['messageID'=>5],['messageID'=>8]];
        

        在这种情况下,您会像这样添加另一个值:

        $arr[] = ['messageID'=>11];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-06-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-30
          相关资源
          最近更新 更多