【问题标题】:Comparing two arrays using both keys and values使用键和值比较两个数组
【发布时间】:2015-12-17 09:07:51
【问题描述】:

您好,我有两个数组,一个来自客户端,另一个来自我的数据库,我希望能够比较这两个数组并确保它们相等。

等于我的意思是它们都具有相同的键并且键具有相同的值:

array (size=2)
  0 => 
    array (size=5)
      'id' => int 13
      'class' => string 'Regular' (length=7)
      'price' => int 100
  1 => 
    array (size=5)
      'id' => int 13
      'class' => string 'Regular' (length=7)
      'price' => int 200


array (size=2)
  0 => 
    array (size=5)
      'id' => int 13
      'class' => string 'Regular' (length=7)
      'price' => int 100
  1 => 
    array (size=5)
      'id' => int 13
      'class' => string 'Regular' (length=7)
      'price' => int 300

在上述场景中,y 函数应该返回 false,因为即使我的数组具有相同数量的元素,第二个索引的价格属性也不同,第一个数组有 200,第二个数组有 300。

此外,如果由于某种原因数组 1 的元素比数组 2 多,那么它也应该返回 false。

最好的方法是什么?押注速度和性能。

我正在考虑将两个数组都转换为 json 并像字符串一样检查它们。

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    试试这个

    $arraysAreEqual = ($a == $b); // TRUE if $a and $b have the same key/value pairs.
    $arraysAreEqual = ($a === $b); // TRUE if $a and $b have the same key/value pairs in the same order and of the same types.
    

    【讨论】:

      【解决方案2】:

      array_diff() 就是为了这个目的。如果数组很小,也可以,但为了优化,请查看this post。它涉及翻转数组值和键以进行更快的比较。还有this other stack comment 用于哈希表方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 2022-09-30
        相关资源
        最近更新 更多