PHP中的二维数组是由多个一维数组组成的数组。差集通常指的是两个集合中不同的元素。在二维数组的上下文中,差集可以理解为两个二维数组中不同的子数组。
以下是一个计算两个二维数组差集的示例代码:
<?php
$array1 = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
['id' => 3, 'name' => 'Charlie']
];
$array2 = [
['id' => 2, 'name' => 'Bob'],
['id' => 3, 'name' => 'Charlie'],
['id' => 4, 'name' => 'David']
];
function arrayDiffByKeys($array1, $array2) {
$diff = [];
foreach ($array1 as $item1) {
$found = false;
foreach ($array2 as $item2) {
if ($item1['id'] == $item2['id']) {
$found = true;
break;
}
}
if (!$found) {
$diff[] = $item1;
}
}
return $diff;
}
$diffArray = arrayDiffByKeys($array1, $array2);
print_r($diffArray);
?>
原因:
解决方法:
假设两个数组的键值对顺序不同,可以使用array_column
函数来提取键值进行比较:
<?php
function arrayDiffByKey($array1, $array2, $key) {
$keys1 = array_column($array1, $key);
$keys2 = array_column($array2, $key);
$diffKeys = array_diff($keys1, $keys2);
$diffArray = [];
foreach ($diffKeys as $diffKey) {
$diffArray[] = current(array_filter($array1, function($item) use ($diffKey, $key) {
return $item[$key] == $diffKey;
}));
}
return $diffArray;
}
$diffArray = arrayDiffByKey($array1, $array2, 'id');
print_r($diffArray);
?>
通过这种方式,可以更准确地计算出两个二维数组的差集。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云