Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-比较两个数组_Php_Arrays - Fatal编程技术网

PHP-比较两个数组

PHP-比较两个数组,php,arrays,Php,Arrays,这是我的两个阵列: Array ( [25] => Array ( [items_to_give] => 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
                    )

            )

    )

[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]都包含在两个数组中,所以返回的数组是这样的):

我已经尝试过的:

$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\u to\u give]和[items\u to\u 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;
  }

数组_intersect()和数组_intersect _assoc()听起来像是在寻找Semi offtopic:示例代码修改它正在遍历的数组。这可能导致未定义和不可预测的行为。如果您需要在遍历时修改数组的内容,请使用引用,即。
foreach($arras$key=>&$val){$val++;}
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;
  }