【问题标题】:Array combine into associative array数组组合成关联数组
【发布时间】:2011-12-28 22:48:25
【问题描述】:

我需要将关联数组的值添加到另一个数组中。

$a = array(4=>2,5=>5);
$b = arrray(array(0=>0,1=>4,2=>10,3=>1000),array()...);

我期望得到的是第三个数组 ($c),如下所示,其中 $b 的内容跟在 $a 的内容之后:

$c = array(array(4=>2,5=>5,0=>0,1=>4,2=>10,3=>1000),array(4=>2,5=>5....));

这是我写的(不工作):

$c = array();
foreach ($possible_opp_action as $sub) {
    $c[] = array_push($to_merge,array_values($sub));

}

【问题讨论】:

  • 一个关联数组有字符串键,你的示例数组都有数字键...你能明确你想要什么吗?

标签: php associative-array


【解决方案1】:
$a = array(4=>2,5=>5);
$b = array(array(0=>0,1=>4,2=>10,3=>1000),
           array(0=>0,1=>40,2=>100,3=>2000),
           array(4=>10)
          );

$c = array();
foreach($b as $tmp) {
    $c[] = $a+$tmp;
}

var_dump($c);

与 array_merge 不同,这将保留数字键...但要注意重复键

【讨论】:

    【解决方案2】:
    $c = array();
    foreach ($b as $bb) {
        $c[] = array_merge($a,$bb);
    }
    

    【讨论】:

      【解决方案3】:

      如果您不需要原始形式的$b

      <?php
      
      $a = array(4=>2,5=>5);
      $b = array(array(0=>0,1=>4,2=>10,3=>1000),array());
      
      foreach ($b as &$ref) {
          $ref = $a + $ref;
      }
      
      var_dump($b);
      

      否则:

      <?php
      
      $a = array(4=>2,5=>5);
      $b = array(array(0=>0,1=>4,2=>10,3=>1000),array());
      
      $c = array();
      
      foreach ($b as &$ref) {
          $c[] = $a + $ref;
      }
      
      var_dump($c);
      

      【讨论】:

        【解决方案4】:

        你需要 array_merge。

        http://us.php.net/manual/en/function.array-merge.php

        注意重复键的处理:

        将一个或多个数组的元素合并在一起,以便将一个数组的值附加到前一个数组的末尾。它返回结果数组。 如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个。但是,如果数组包含数字键,则后面的值不会覆盖原始值,而是会被追加。 输入数组中带有数字键的值将在结果数组中使用从零开始的递增键重新编号。

        编辑:

        我可能没有正确阅读问题 - 请澄清...

        你想要一个数组中的所有数组项,还是一个包含原始数组作为其中项的数组(数组数组)?

        IE: c = array(a=a, b=b, c=c, etc.)

        对比

        c = 数组( b = 数组(a=a,b=b,c=c 等), a=数组(d=d,e=e 等) )

        $c[] = $b;
        $c[] = $a;
        
        //or
        
        $c = array();
        foreach ($possible_opp_action as $sub) {
            $c[] = $sub;    
        }
        

        【讨论】:

          【解决方案5】:

          试试

          $c = array_merge($b, $a)
          

          帮助http://php.net/manual/es/function.array-merge.php

          【讨论】:

            猜你喜欢
            • 2014-01-31
            • 2016-02-17
            • 2019-08-11
            • 1970-01-01
            • 2021-03-06
            • 2021-02-03
            • 1970-01-01
            • 2011-10-12
            • 2013-03-09
            相关资源
            最近更新 更多