我有一个多维数组。 这里只有两个记录的例子,但可以有更多的:PHP - 确保多维数组中的某些值是唯一的
array(2) {
[0]=> array(7)
{
[0]=> string(0) ""
[1]=> string(0) ""
[2]=> string(7) "4646468"
[3]=> string(1) "1"
[4]=> string(1) "2"
[5]=> string(10) "2016-08-18"
[6]=> string(0) ""
}
[1]=> array(7)
{
[0]=> string(0) ""
[1]=> string(0) ""
[2]=> string(7) "4646469"
[3]=> string(1) "1"
[4]=> string(1) "2"
[5]=> string(10) "2016-08-18"
[6]=> string(0) ""
}
}
我需要确保对键0,1,和每个内记录2的值是唯一的。如果其中的任何一个都不是,我想从数组中删除该记录(如数组元素的7个值)(但空字符串应该被忽略)。我发现this answer to a similar question成功地输出了重复对象,但我也想从主数组中删除它们。问题是我根本不明白这个代码。我不明白的回调,因此不知道如何修改这个代码来实现我需要什么:
$unique = array();
foreach($checked as $v) {
$key = $v[0] . $v[1] . $v[2];
if (!isset($unique[$key]))
$unique[$key] = 0;
else
$unique[$key]++;
}
print_r(array_filter($unique));
感谢这一点 - 我开始以这种方式使用的原代码,和它的作品除外,出于某种原因,它不工作,如果这三个字段中的一个以上已被填写。换句话说,如果_only_key [0]中的数据与另一个记录匹配,它会找到它。但是,如果密钥1和2也有数据,则代码不起作用。 – daninthemix
用户输入提供的密钥中是否包含值,并且输入是否已过滤?试试这个key_combination。 $ key = trim($ v [0])。修剪($ V [1])。修剪([$ v [1]) –
没有帮助我害怕。它将在三个字段中的任何一个上找到匹配,但只有当这三个匹配字段是唯一的字段时才可以匹配。 – daninthemix