如何在php中合并没有重复的数组
Posted
技术标签:
【中文标题】如何在php中合并没有重复的数组【英文标题】:how to merge arrays without duplicates in php 【发布时间】:2021-06-13 21:44:42 【问题描述】:执行任务时遇到问题。
我有两个数组,第一个数组显示从 20 到 60 的随机数。 第二个数组显示从 40 到 80 的数字。
我需要创建第三个数组,它将是两个数组的合并,但没有重复。
我的代码如下所示:
$myLength=mt_rand(50,80);
$array1=array();
for ($i=0;$i<$myLength;$i++)
$array1[$i]=mt_rand(20,60);
print_r($array1);
echo "<br>";
$array2=array();
for ($i=0;$i<$myLength;$i++)
$array2[$i]=mt_rand(40,80);
print_r($array2);
echo "<br>";
$array3 = array_merge($array1,$array2);
if ($array2!=$array1)
print_r($array3);
我可能明白我可以用类似的东西来解决这个问题
if(arr1.value != arr2.value) print value to arr3
但我不知道如何实现它。或者也许有更简单的选择,但我坚持并试图找到一种方法。也许这个任务已经有准备好的功能?
有什么想法可以使它最精确吗?
【问题讨论】:
这能回答你的问题吗? php - Merging two arrays into one array (also Remove Duplicates) 最终的数组需要固定长度,还是可变的?请添加具体要求,否则您将收到不符合您要求的答案。 【参考方案1】:$array3 = array_unique(array_merge($array1, $array2));
array_merge
合并两个数组,同时
array_unique
确保数组中没有重复项。
【讨论】:
请添加一些关于您的代码如何解决问题的说明。 @NigelRen 现在好点了吗?【参考方案2】:试试看
function arrayRecursiveDiff($aArray1, $aArray2)
$aReturn = array();
foreach ($aArray1 as $mKey => $mValue)
if (array_key_exists($mKey, $aArray2))
if (is_array($mValue))
$aRecursiveDiff = arrayRecursiveDiff($mValue, $aArray2[$mKey]);
if (count($aRecursiveDiff)) $aReturn[$mKey] = $aRecursiveDiff;
else
if ($mValue != $aArray2[$mKey])
$aReturn[$mKey] = $mValue;
else
$aReturn[$mKey] = $mValue;
return $aReturn;
【讨论】:
请添加一些说明,说明您的代码将如何解决问题。【参考方案3】:有很多方法可以解决这个问题。我能想到的最简单的方法来自https://***.com/a/29296247/296555。
它生成 2 个数组 (range
)
随机播放 (shuffle
)
获取每一个的子集 (array_slice
)
合并它们 (array_merge
),
最后提取出唯一值 (array_unique
)。
见http://sandbox.onlinephpfunctions.com/code/46ae8c76f0aa7fa0c84c449b357911ea1d1919db
<?PHP
// http://sandbox.onlinephpfunctions.com/code/46ae8c76f0aa7fa0c84c449b357911ea1d1919db
// Final array will have a maximum length of $length*2, but it may be shorter.
$length = 10;
// First
$first = range(20, 60);
shuffle($first);
$first = array_slice($first, 0, $length);
// Second
$second = range(40, 80);
shuffle($second);
$second = array_slice($second, 0, $length);
$merged = array_unique(array_merge($first, $second));
print_r($merged);
【讨论】:
以上是关于如何在php中合并没有重复的数组的主要内容,如果未能解决你的问题,请参考以下文章
php合并两个二维数组,如果有两组相同值,只取一个,如何实现?