php - foreach中的Array_diff?
问题描述
我需要比较一些数组的值。这个数组是多维的,我需要比较里面的数组。
这里是转储:
php
array (size=4)
1 =>
array (size=3)
0 => string '96' (length=2)
1 => string '90' (length=2)
2 => string '91' (length=2)
2 =>
array (size=3)
0 => string '96' (length=2)
1 => string '90' (length=2)
2 => string '91' (length=2)
3 =>
array (size=4)
0 => string '96' (length=2)
1 => string '90' (length=2)
2 => string '91' (length=2)
3 => string '98' (length=2)
4 =>
array (size=4)
0 => string '96' (length=2)
1 => string '90' (length=2)
2 => string '91' (length=2)
3 => string '98' (length=2)
我想用 , 之类的东西array_diff
来比较不同的数组,但是......即使它看起来很愚蠢,我也不知道该怎么做。我想我希望“提取” 4 个数组,以便能够比较它们。
有没有人可以向我解释这样做的好方法?非常感谢。
解决方案
<?php
$arr = [
['96','90','91'],
['96','90','91'],
['96','90','91','98'],
['96','90','91','98'],
];
$set = [];
foreach ($arr as $values) {
foreach($values as $each_value){
if(!isset($set[$each_value])) $set[$each_value] = true;
}
}
$result = [];
$set = array_keys($set);
foreach ($arr as $values) {
foreach($set as $value){
if(!in_array($value,$values)) $result[] = $value;
}
}
$result = array_unique($result);
print_r($result);
- 我们首先让一组元素出现在每个数组中。
- 稍后,我们再次遍历所有数组,并根据每个数组值检查集合中的每个元素。
- 如果我们发现集合中的元素不存在于每个单独的子数组中,我们将其添加到
result
. - 请注意,我们可以计算元素的频率并将其与实际数据集的大小进行比较,但重复值可能会导致问题。
推荐阅读
- php - 带有 PDFtk 的 Azure Web 应用程序(PHP laravel 后端)
- wordpress - 上一页 下一页 Wordpress 中自定义帖子类型的简码
- python - 为每个内容创建一个包含前 10 个推荐的数据框
- java - 从提取的 war 文件中动态加载外部类
- ruby-on-rails - 耙任务:NoMethodError:未定义的方法“标记”为 nil:NilClass
- excel - 将 PDF 文件路径和名称添加到单元格
- php - 为运输评论构建正则表达式
- mysql - 既然没有事务 SELECT FOR UPDATE 是没有意义的,而且事务本身使用锁,那么 SELECT FOR UPDATE 的用例是什么?
- java - 安卓工作室。活动更改后屏幕闪烁
- python-3.x - 分类特征的 Pandas Groupby 占用太多 RAM 和时间