Php 如何求两个数组的差

Php 如何求两个数组的差,php,arrays,Php,Arrays,所以我有两个数组,当我进行var_转储时,它们看起来像这样: array(4) { ["DatabinFieldName_1"]=> string(7) "Heading" ["DatabinFieldType_1"]=> string(13) "VARCHAR (255)" ["DatabinFieldName_3"]=> string(11) "DateCreated" ["DatabinFieldType_3"]=> stri

所以我有两个数组,当我进行var_转储时,它们看起来像这样:

array(4) { 
    ["DatabinFieldName_1"]=> string(7) "Heading" 
    ["DatabinFieldType_1"]=> string(13) "VARCHAR (255)" 
    ["DatabinFieldName_3"]=> string(11) "DateCreated" 
    ["DatabinFieldType_3"]=> string(8) "DATETIME" 
}

array(8) { 
    ["DatabinFieldName_1"]=> string(7) "Heading" 
    ["DatabinFieldType_1"]=> string(13) "VARCHAR (255)" 
    ["DatabinFieldName_2"]=> string(4) "Copy" 
    ["DatabinFieldType_2"]=> string(4) "TEXT" 
    ["DatabinFieldName_3"]=> string(11) "DateCreated" 
    ["DatabinFieldType_3"]=> string(8) "DATETIME" 
    ["DatabinFieldName_4"]=> string(8) "Comments" 
    ["DatabinFieldType_4"]=> string(4) "TEXT" 
}
我需要得到不同的结果。我试过用这个代码

// Get POST Array                               
$databinPostArray = $_POST;                             

// Get Databin Array
$databinObject =json_decode($nbase->getwhere("Databins","ID='".$databinID."' LIMIT 1;",$_SESSION["UserDB"]));
$databinArray= unserialize($databinObject[0]->DatabinArray);

var_dump($databinPostArray);
var_dump($databinArray);

$result = array_diff($databinPostArray, $databinArray);

print_r($result);

问题是我一直在拿回
Array()
,这意味着即使存在差异,也找不到任何差异。

您需要反转参数:

$result = array_diff($databinArray, $databinPostArray);

array\u diff
返回一个数组,其中包含第一个数组中不在第二个数组中的所有内容

如果要获取任一阵列唯一的所有元素,可以使用:

$result = array_diff(array_unique(array_merge($databinArray, $databinPostArray)),
                     array_intersect($databinArray, $databinPostArray));
array_diff()
返回第二个数组中不在第一个数组中的元素。因此,您的问题的答案是:

$result = array_diff($databinPostArray, $databinArray);
if (couunt($result) == 0) {
    $result = array_diff($databinArray, $databinPostArray);
}
这样,无论
$databinostarray
$databinArray
中是否有更多键,都会返回差异

如果您只想检查哪些元素在
$databinArray
中,而不在
$databinPostArray
中,请执行以下操作:

$result = array_diff($databinArray, $databinPostArray);

你试过数组_diff()吗;问题是你们做错了事情
Array_diff
查找
Array_1
中不存在的所有元素。根据您的
var\u dump
$databinPostArray
的所有元素都存在于
$databinArray
中,因此没有区别。空数组不是假的。