因此,我有两个数组,在执行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(),这意味着即使存在差异,它也找不到任何不同之处。
发布于 2014-12-23 07:48:38
array_diff()返回第二个数组的元素,这些元素不在第一个one.So中,您的问题的答案是:
$result = array_diff($databinPostArray, $databinArray);
if (couunt($result) == 0) {
$result = array_diff($databinArray, $databinPostArray);
}这样,无论$databinPostArray还是$databinArray中有更多的键,差异都将被返回。
如果您只想检查$databinArray中的哪些元素,而不是$databinPostArray中的元素,请执行以下操作:
$result = array_diff($databinArray, $databinPostArray);发布于 2014-12-23 07:47:03
你需要推翻这些论点:
$result = array_diff($databinArray, $databinPostArray);array_diff返回一个数组,其中包含第一个数组中没有在第二个数组中的所有内容。
如果您想获取任何一个数组中唯一的所有元素,可以使用:
$result = array_diff(array_unique(array_merge($databinArray, $databinPostArray)),
array_intersect($databinArray, $databinPostArray));https://stackoverflow.com/questions/27615966
复制相似问题