PHP关联数组重复键

Ste*_*ven 17 php

我有一个关联数组,但是当我使用下面的函数向它添加值时,它似乎覆盖了相同的键.有没有办法让多个相同的键具有不同的值?或者是否有另一种格式相同的数组形式?

我希望有:

42=>56
42=>86
42=>97
51=>64
51=>52
etc etc
Run Code Online (Sandbox Code Playgroud)

码:

   function array_push_associative(&$arr) {
       $args = func_get_args();
       foreach ($args as $arg) {
           if (is_array($arg)) {
               foreach ($arg as $key => $value) {
                   $arr[$key] = $value;
                   $ret++;
               }
           }else{
               $arr[$arg] = "";
           }
       }
       return $ret;
    }
Run Code Online (Sandbox Code Playgroud)

Amb*_*ber 32

不,您不能在关联数组中拥有多个相同的键.

但是,您可以使用唯一键,每个键的对应值都是数组,并且这些数组的每个键都有多个元素.

而不是这个......

42=>56 42=>86 42=>97 51=>64 51=>52
Run Code Online (Sandbox Code Playgroud)

你有这个:

Array (
    42 => Array ( 56, 86, 97 )
    51 => Array ( 64, 52 )
)
Run Code Online (Sandbox Code Playgroud)


Mar*_*lin 8

键是变量的扩展.如果覆盖变量...则覆盖变量.


Ari*_*ris 5

不,你不能有。我使用的解决方法是将每个键/值对作为一个包含 2 个元素的新数组:

$test = array(
     array(42,56),
     array(42,86),
     array(42,97),
     array(51,64),
     array(51,52)
)
Run Code Online (Sandbox Code Playgroud)

例如,您可以使用以下命令访问第二个密钥 (=42):

$test[1][0]
Run Code Online (Sandbox Code Playgroud)

和第二个值(= 86)使用:

 $test[1][1] 
Run Code Online (Sandbox Code Playgroud)