比较两个数组并使用php取消设置数组中的任何匹配对?
我对数组和多维数组非常陌生,我想知道如何比较两个数组的key=>value对,或者一个数组与包含数组的两个不同键?并从匹配键和值的每个数组中取消设置键=>值对 示例阵列: 因此,from是基本键数组,to是比较键数组。 我希望遍历往返键数组,查找匹配的键,并比较两个匹配的值 如果它们的key=>value对匹配,则将key=>value从键数组和键数组中取消设置 如果在to中找到的密钥不在from中,请将其保留在to数组中。但是,如果在“发件人”中找到了一个在“收件人”中找不到的密钥,请将其从“发件人”密钥数组中取消设置 将上述阵列转换为如下内容:比较两个数组并使用php取消设置数组中的任何匹配对?,php,arrays,multidimensional-array,compare,Php,Arrays,Multidimensional Array,Compare,我对数组和多维数组非常陌生,我想知道如何比较两个数组的key=>value对,或者一个数组与包含数组的两个不同键?并从匹配键和值的每个数组中取消设置键=>值对 示例阵列: 因此,from是基本键数组,to是比较键数组。 我希望遍历往返键数组,查找匹配的键,并比较两个匹配的值 如果它们的key=>value对匹配,则将key=>value从键数组和键数组中取消设置 如果在to中找到的密钥不在from中,请将其保留在to数组中。但是,如果在“发件人”中找到了一个在“收件人”中找不到的密钥,请将其从“
Array
(
[from] => Array
(
[group_name] => test adgrp
[zone_id] => 12
)
[to] => Array
(
[group_name] => test adgroup
[zone_id] => 2
[group_email] => test@group.com
)
)
@请尝试以下概念:
<?php
$arr1 =
array
(
"from" => array
(
"active" => 1,
"airport_ids" => null,
"group_name" => "test adgrp",
"zone_id" => 12,
"creation_time" => 1234567890
),
"to" => array
(
"active" => 1,
"airport_ids" => null,
"group_name" => "test adgroup",
"zone_id" => 2,
"group_email" => "test@group.com"
)
);
echo "<pre>";
print_r($arr1); //before
foreach($arr1["from"] as $key => $value) {
foreach($arr1["to"] as $key1 => $value1) {
if($key == $key1 && $value == $value1){
unset($arr1["from"][$key], $arr1["to"][$key1]);
break;
}
}
}
echo "<pre>";
print_r($arr1); //after
重复:@mickmackusa是一个多维数组,不是单个数组array@Meta在from和to[group_name]=>test-adgroup中也很常见,所以为什么要在[to]??@BunkerBoy it中使用这个呢?我链接的答案是处理两个数组。如果我读取的数组正确,那么您是在比较$array[from]和$array[to],对吗?可能是重复的原因,即这是首选高于array_diff array的原因,在某些情况下,值是不同的,但并不是真的不同。例如:如果from.active==0且to.active为空或null,从技术上讲,这与系统中的0相同。但是,数组_diff将其作为两个数组之间的一个更改进行拾取。使用上面列出的方法,我可以执行额外的if语句来删除那些特殊情况。@BunkerBoy当满足条件语句并使用unset时,添加一个break;因为没有理由进一步迭代内部循环。如所示@
<?php
$arr1 =
array
(
"from" => array
(
"active" => 1,
"airport_ids" => null,
"group_name" => "test adgrp",
"zone_id" => 12,
"creation_time" => 1234567890
),
"to" => array
(
"active" => 1,
"airport_ids" => null,
"group_name" => "test adgroup",
"zone_id" => 2,
"group_email" => "test@group.com"
)
);
echo "<pre>";
print_r($arr1); //before
foreach($arr1["from"] as $key => $value) {
foreach($arr1["to"] as $key1 => $value1) {
if($key == $key1 && $value == $value1){
unset($arr1["from"][$key], $arr1["to"][$key1]);
break;
}
}
}
echo "<pre>";
print_r($arr1); //after