所以当我执行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()
,这意味着它没有找到任何差异,即使有。
答案 0 :(得分:2)
array_diff()
返回第二个数组中不在第一个数组中的元素。所以问题的答案是:
$result = array_diff($databinPostArray, $databinArray);
if (couunt($result) == 0) {
$result = array_diff($databinArray, $databinPostArray);
}
这样,无论$databinPostArray
还是$databinArray
中是否有更多键,都会返回差异。
如果您想要的只是检查$databinArray
中的哪些元素,而不是$databinPostArray
中的元素,请执行以下操作:
$result = array_diff($databinArray, $databinPostArray);
答案 1 :(得分:0)
您需要撤消参数:
$result = array_diff($databinArray, $databinPostArray);
array_diff
返回一个数组,其中第一个数组中的所有内容都不在第二个数组中。
如果要获取任一阵列唯一的所有元素,可以使用:
$result = array_diff(array_unique(array_merge($databinArray, $databinPostArray)),
array_intersect($databinArray, $databinPostArray));