Php 我如何比较下面的二维数组?
我只需要基于“value”键的数组1中不存在的元素 阵列1Php 我如何比较下面的二维数组?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我只需要基于“value”键的数组1中不存在的元素 阵列1 $array1 = array( array('value' => 113214, 'revision_id' => 2047152), array('value' => 236462, 'revision_id' => 2045678), array('value' => 236541, 'revision_id' => 2047155) ); 阵列2 $array2
$array1 = array(
array('value' => 113214, 'revision_id' => 2047152),
array('value' => 236462, 'revision_id' => 2045678),
array('value' => 236541, 'revision_id' => 2047155)
);
阵列2
$array2 = array(
array('value' => 113214, 'revision_id' => 2047152),
array('value' => 236461, 'revision_id' => 2047153),
array('value' => 236541, 'revision_id' => 2047155)
);
我需要如下输出,数组的差异应该基于值
$output = array(
array('value' => 236462, 'revision_id' => 2045678)
);
只需执行嵌套的foreach循环并检查条件,希望它能帮助您:
$arraycheck= array();
foreach($newData as $data1) {
$duplicatecheck = false;
foreach($oldData as $data2) {
if($data1['value'] === $data2['value'] && $data1['revision_id'] === $data2['revision_id']) $duplicatecheck = true;
}
if($duplicatecheck === false) $arraycheck[] = $data1;
}
只需执行嵌套的foreach循环并检查条件,希望它能帮助您:
$arraycheck= array();
foreach($newData as $data1) {
$duplicatecheck = false;
foreach($oldData as $data2) {
if($data1['value'] === $data2['value'] && $data1['revision_id'] === $data2['revision_id']) $duplicatecheck = true;
}
if($duplicatecheck === false) $arraycheck[] = $data1;
}
您可以使用接受最后一个参数的函数作为回调函数,并且可以在这里轻松定义比较
$array1 = [
['value' => '113214', 'revision_id' => '2047152'],
['value' => '236462', 'revision_id' => '2045678'],
['value' => '236541', 'revision_id' => '2047155'],
];
$array2 = [
['value' => '113214', 'revision_id' => '2047152'],
['value' => '236461', 'revision_id' => '2047153'],
['value' => '236541', 'revision_id' => '2047155'],
];
$result = array_udiff ($array1, $array2, function($x, $y) {
return $x['value'] - $y['value'];
});
print_r($result);
您可以使用接受最后一个参数的函数作为回调函数,并且可以在这里轻松定义比较
$array1 = [
['value' => '113214', 'revision_id' => '2047152'],
['value' => '236462', 'revision_id' => '2045678'],
['value' => '236541', 'revision_id' => '2047155'],
];
$array2 = [
['value' => '113214', 'revision_id' => '2047152'],
['value' => '236461', 'revision_id' => '2047153'],
['value' => '236541', 'revision_id' => '2047155'],
];
$result = array_udiff ($array1, $array2, function($x, $y) {
return $x['value'] - $y['value'];
});
print_r($result);
摘自:
用法:
$diff = my_array_diff($arr1, $arr2);
var_dump($diff);
摘自:
用法:
$diff = my_array_diff($arr1, $arr2);
var_dump($diff);
首先,使用将“value”的值从array2获取到一维数组中:
$a2values = array_column($array2, 'value');
然后使用这些值排列1
首先,使用将“value”的值从array2获取到一维数组中:
$a2values = array_column($array2, 'value');
然后使用这些值排列1
非常感谢..您的代码工作了,但将$duplicate更改为$duplicatecheck,然后工作了。哦,感谢@user3686276的错误谢谢您..您的代码工作了,但将$duplicate更改为$duplicatecheck,然后工作了。哦,感谢@user3686276的错误