所以我有两个数组,当我执行 var_dump 时,它们看起来像这样:
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()
回来,这意味着即使存在差异也没有发现任何差异。
array_diff()
返回第二个数组中不在第一个数组中的元素。所以你的问题的答案是:
$result = array_diff($databinPostArray, $databinArray);
if (count($result) == 0) {
$result = array_diff($databinArray, $databinPostArray);
}
这样,无论
$databinPostArray
中的键多还是 $databinArray
中的键多,都会返回差值。
如果您只想检查哪些元素在
$databinArray
中,而不是在 $databinPostArray
中,请执行以下操作:
$result = array_diff($databinArray, $databinPostArray);
你需要颠倒论点:
$result = array_diff($databinArray, $databinPostArray);
array_diff
返回一个数组,其中包含第一个数组中第二个数组中不存在的所有内容。
如果你想获取任一数组唯一的所有元素,可以使用:
$result = array_diff(array_unique(array_merge($databinArray, $databinPostArray)),
array_intersect($databinArray, $databinPostArray));