PHP关联数组重复键

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

我希望有:

42=>56 42=>86 42=>97 51=>64 51=>52 etc etc 

码:

  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; } 

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

但是,您可以拥有每个对应的值都是数组的唯一键,而且这些数组对于每个键都有多个元素。

所以,而不是这个…

 42=>56 42=>86 42=>97 51=>64 51=>52 

…你有这个:

 Array ( 42 => Array ( 56, 86, 97 ) 51 => Array ( 64, 52 ) ) 

关键是variables的扩展。 如果你覆盖variables…你覆盖variables。

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

 $test = array( array(42,56), array(42,86), array(42,97), array(51,64), array(51,52) ) 

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

 $test[1][0] 

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

  $test[1][1] 

我也有相同的需求也创build一个数组与相同的键,(只是为了保持性能通过使用两个循环,而不是4循环)。

通过使用这个:[$ increment。“ – ”。$ domain_id] => $ article_id; print_r()后,每个域中的文章列表如下所示:

 $AllSa = Array ( [1-5] => 143 [2-5] => 176 [3-5] => 992 [4-2] => 60 [5-2] => 41 [6-2] => 1002 [4-45] => 5 [5-45] => 18 [6-45] => 20 ) 

然后通过循环遍历这个表来按区域关联文章:

 $AssocSAPerDomain = array(); $TempDomain = ""; $TempDomain_first = 0; foreach($tree_array as $id_domain => $id_sa){ if( !$TempDomain && $TempDomain_first == 0 ){ $TempDomain = substr(strrchr($id_domain, "-"), 1); $TempDomain_first = 1; } $currentDomain = substr(strrchr($id_domain, "-"), 1); //if($TempDomain == $currentDomain) $AssocSAPerDomain[$currentDomain][] = $id_sa; $TempDomain = substr(strrchr($id_domain, "-"), 1); } 

你得到这个

 $assoc= Array ( [5] => 143 => 176 => 992 [2] => 60 => 41 => 1002 [45]=> 5 => 18 => 20 )