使用 PHP 函数比较两个数组以找出差异
Posted
技术标签:
【中文标题】使用 PHP 函数比较两个数组以找出差异【英文标题】:Comparing two arrays to find difference using PHP function 【发布时间】:2018-10-31 17:00:16 【问题描述】:在 magento2 中使用 php,我需要比较两个数组。 $Session 数组大小将大于 $post 数组大小。所以我需要将我的 $post 值与 $session 值进行比较。如果两个数组的所有键值相同,则应返回空数组。
$session = [
"domains" => 'x',
"domain" => '',
"searchfilter" => 'AD DOmain',
"searchterm" => ''
];
$post = [
"domains" => 'xx',
"domain" => 'AD DOmain',
"searchfilter" => ''
];
$result = $this->formArray($post, $session) ;
我的预期结果:
Array()
"domains" => 'xx',
"domain" => 'AD DOmain',
"searchfilter" => ''
我的实际结果:
Array()
我尝试过类似的东西,
public function formArray($post, $session)
$checkNewValue = array_diff($post, $session);
$checkNewKey = array_diff_key($post, $session);
$mergedArray = array_merge($checkNewValue, $checkNewKey);
return $mergedArray;
我不知道缺少什么。请帮忙!谢谢
【问题讨论】:
如果问题解决了,请accept您认为是解决问题的最佳答案。 【参考方案1】:来自这个问题:PHP - Merging two arrays into one array (also Remove Duplicates)
$session = [
"domains" => 'x',
"domain" => '',
"searchfilter" => 'AD DOmain',
"searchterm" => ''
];
$post = [
"domains" => 'xx',
"domain" => 'AD DOmain',
"searchfilter" => ''
];
//This will return true if both `$session` and `$post` has the same key/value pair.
http://www.php.net/manual/en/language.operators.array.php
`$a == $b Equality TRUE if $a and $b have the same key/value pairs.`
if($session == $post)
$new_arr = array();
else
$new_arr = array_unique(array_merge($session,$post), SORT_REGULAR);
echo '<pre>';
print_r($new_arr);
结果:
//if array are not equal
Array
(
[domains] => xx
[domain] => AD DOmain
[searchfilter] =>
)
//else
Array()
【讨论】:
如果 $post 数组类似于 $session 数组会怎样。它应该为我返回一个空数组。但它返回 $session 数组 @KNandy 请在您的问题中说明。另外,定义相似?值相同吗?另外,请在您的问题中写下。 @KNandy 只是为了澄清他们是否具有相同的键/值对?因为您的$session
有 4 个键/值对,而 $post
有 3 个。【参考方案2】:
尝试使用array_diff_assoc。
<?php
$session = [
"domains" => 'x',
"domain" => '',
"searchfilter" => 'AD DOmain',
"searchterm" => ''
];
$post = [
"domains" => 'xx',
"domain" => 'AD DOmain',
"searchfilter" => ''
];
$checkNewValue = array_diff_assoc($post, $session);
var_dump($checkNewValue);
?>
【讨论】:
【参考方案3】:array_diff_assoc可以在这里使用。
array_diff_assoc — 计算数组的差异 额外的索引检查
【讨论】:
以上是关于使用 PHP 函数比较两个数组以找出差异的主要内容,如果未能解决你的问题,请参考以下文章