【问题标题】:Combining add and replacing values组合添加和替换值
【发布时间】:2009-11-09 04:52:58
【问题描述】:

我很想知道 php 是否有一个函数允许我将 2 个数组连接在一起,如果 array2 中的值已经存在,则用 array2 的值​​替换 array1 中的值。看例子

array1('value1','value2','value3',); array2('value4','value2','value1');

array3 = functionEmerge(array1, array2);

array3('value1','value2','value3','value4',);

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    您可以根据array_merge() 的结果调用array_unique() 以获得您想要的结果。

    【讨论】:

    • 老实说,我建议 jboxer 解决这个问题 - 我实际上并不知道 + 用于数组作为联合。
    • 是的,非数字键确实使事情复杂化,但是如果您使用像 numeric25 示例中的普通数组,我认为联合运算符 (+) 更好;更具可读性,如果没有别的。
    【解决方案2】:

    我相信您正在谈论合并两个数组。如果是这种情况,PHP 带有联合数组运算符,即 +。所以:

    $arr = array('value1', 'value2', 'value3') + array('value1', 'value2', 'value4');
    

    应该得到你:

    array('value1', 'value2', 'value3', 'value4')
    

    我可能是错的,所以在使用之前测试一下。

    【讨论】:

    • 这是错误的。 + 数组上的运算符只合并键,而不是值。
    • 嗯,yuku,我测试了它,如果键是数字,它似乎会合并值。
    【解决方案3】:

    您要查找的函数称为 array_merge

    array array_merge ( array $array1 [, array $array2 [, array $... ]] )
    

    将一个或多个数组的元素合并在一起,以便将一个数组的值附加到前一个数组的末尾。它返回结果数组。

    如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个。但是,如果数组包含数字键,则后面的值不会覆盖原始值,而是会被追加。

    如果只给定一个数组并且该数组是数字索引的,则键会以连续的方式重新索引。

    【讨论】:

      【解决方案4】:

      我没有找到一个单独的运算符,但这会起作用:

      $array3 = array_keys(array_flip($array1) + array_flip($array2)) 
      

      【讨论】:

        【解决方案5】:
        Set::merge( $a, $b )
        

        【讨论】:

          猜你喜欢
          • 2020-10-02
          • 1970-01-01
          • 2023-04-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-28
          • 1970-01-01
          相关资源
          最近更新 更多