簡體   English   中英

PHP-比較兩個數組

[英]PHP - Compare two arrays

這些是我的2個數組:

Array
(
[25] => Array
    (
        [items_to_give] => Array
            (
                [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

        [items_to_get] => Array
            (
                [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

    )

[26] => Array
    (
        [items_to_give] => Array
            (
                [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

        [items_to_get] => Array
            (
                [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

    )

[36] => Array
    (
        [items_to_give] => Array
            (
                [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )
            )

        [items_to_get] => Array
            (
               [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

    )

)

Array
(
[25] => Array
    (
        [items_to_give] => Array
            (
                [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

        [items_to_get] => Array
            (
                 [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

    )

[26] => Array
    (
        [items_to_give] => Array
            (
                [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

        [items_to_get] => Array
            (
                 [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

    )

[30] => Array
    (
        [items_to_give] => Array
            (
                 [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

        [items_to_get] => Array
            (
                 [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

    )

)

現在我想比較這些數組並返回兩個數組中包含的所有arrayitem。 在示例中,這些是[25]和[26]。

因此,返回的數組應如下所示(正如我所說的[25]和[26]都包含在兩個數組中,因此返回了):

Array
(
[25] => Array
    (
        [items_to_give] => Array
            (
                [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

        [items_to_get] => Array
            (
                 [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

    )

[26] => Array
    (
        [items_to_give] => Array
            (
                [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

        [items_to_get] => Array
            (
                 [0] => Array
                    (
                        [xx] => xx
                        [xx] => xx
                    )

            )

    )
)

我已經嘗試過的

$result = array_map("unserialize", array_intersect($this->serialize_array_values($array1),$this->serialize_array_values($array2)));

function serialize_array_values($arr){
    foreach($arr as $key=>$val){
        sort($val);
        $arr[$key]=serialize($val);
    }

    return $arr;
}

但這會以錯誤的格式返回數組。 [items_to_give]和[items_to_get]被轉換為索引[0]和[1],這是不希望的。

我希望數組在返回時保持原樣 ,這意味着我需要[items_to_give]和[items_to_get]而不是索引[0]和[1]

還有哪些其他可能的解決方案? 感謝您的解決方案。

試試這個功能:

function my_array_diff($arr1, $arr2)
  {
    $res = array();
    foreach ($arr1 as $val1) {
      $val1 = serialize($val1);
      foreach ($arr2 as $key2 => $val2) {
        if (serialize($val2) == $val1) {
          $res[$key2] = $val2;
        }
      }
    }

    return $res;
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM