【问题标题】:Change specific element in associative array更改关联数组中的特定元素
【发布时间】:2012-12-06 00:45:07
【问题描述】:

我有两个关联数组,如下所示:

$prod1 = (
    [name] = 'John',
    [address] = 'Milky way',
    [city] = 'Miami',
);

$prod2 = (
    [address] = 'Not so milky way'
);

$prod1 总是有相同类型的元素 (姓名、地址、城市),但 $prod2 可以包含所有元素中的任何一个的元素或其中的一些

我想要的是替换 $prod1 中与 $prod2 中的元素匹配的元素中的值。在上面的例子中,$prod2 包含 address,因此 $prod1 中的地址应该替换为 $prod2 中的地址(其余元素当然应该保持原样)。

如何做到这一点?

【问题讨论】:

    标签: php arrays element associative-array


    【解决方案1】:

    array_merge 函数将为您执行此操作:

    $prod_new = array_merge($prod1, $prod2);
    

    来自the documentation:

    如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个。

    或者,您可以使用the + operator,它会得到相同的结果:

    $prod_new = $prod1 + $prod2;
    

    + 运算符返回附加到左侧数组的右侧数组;对于两个数组中都存在的键,将使用左侧数组中的元素,而忽略右侧数组中的匹配元素。

    【讨论】:

      【解决方案2】:
      foreach($prod2 as $key => $val)
      {
          $prod1[$key] = $val;
      }
      

      【讨论】:

        【解决方案3】:

        试试这样的:

        $prod1 = array(
        name => 'John',
        address => 'Milky way',
        city => 'Miami',
        );
        
        $prod2 = array(
        address => 'Not so milky way'
        );
        
        foreach ($prod2 as $key=>$value) {
        $prod1[$value] = $value;
        }
        var_dump($prod1);
        

        享受:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-07-01
          • 1970-01-01
          • 2016-05-26
          • 2014-02-22
          • 2011-02-28
          • 2019-07-17
          • 2017-08-30
          • 1970-01-01
          相关资源
          最近更新 更多