我会立即转到查询。我有一个html表单,有两个字段(电子邮件和数字ID)询问每个用户。每行中的两个值可以不同或完全相同。表单是动态的,并根据要求要求多个电子邮件和数字ID。这两个值都被处理为php数组(电子邮件数组和数字数组)。我要求所有人帮我解决问题的方法是找出具有唯一电子邮件的UNIQUE ROW,并且相关的数值在整个数组中也应该是唯一的。
请帮帮我,这对我来说非常重要。 Thanx提前。形式示例如下:
1. email-1 num-1 2. email-2 num-2 3. email-3 num-3 4. email-4 num-4 5. email-2 num-1 6. email-4 num-1 7. email-5 num-5 8. email-2 num-1现在,我们必须寻找独特的行或行...这些输入可以是几百个。
这就是我将数组值显示到下一页的方式 -
<?php foreach($BX_EMAIL as $a=>$b){ ?> <?php echo $a+1; ?> <?php echo $BX_EMAIL[$a]; ?> <?php echo $BX_NUM[$a]; ?> <?php } ?>
现在,此页面之后的预期输出页面只是显示唯一行(具有关联唯一编号的唯一电子邮件)。
示例输入 -
{{1}}
现在,上述输入的输出应为 -
根据手动检查,因为只有10行,结果如下 -
1. abc@pqr.com 10000 2. pqr@abc.com 11223 3. rst@hpq.com 10000 4. tps@lkc.com 90909 5. pqr@abc.com 90909 6. wps@gps.com 11223 7. tts@pps.com 88997 8. abc@pqr.com 11223 9. wps@gps.com 10000 10.tts@lpg.com 78789
现在在上面的输出中有三组 - 第一组相同,因为相同的NUM和EMAIL使得记录相同。但是第2组和第3组没有连接任何记录。这是我所需的预期分离输出。
我希望这次我很清楚。现在请根据情况多考虑一下。
答案 0 :(得分:1)
根据您提供的信息,我认为此解决方案已足够:
// ok - this is a reproduction of the two arrays you've got
$BX_EMAIL = array("1@domain.com", "2@domain.com", "3@domain.com", "2@domain.com");
$BX_NUM = array(1,2,3,2);
// merge the two arrays into two-dimensional array
$BX = array();
for($i = 0; $i < count($BX_EMAIL); $i++)
$BX[] = array($BX_EMAIL[$i], $BX_NUM[$i]);
// generate one-dimensional array of byte stream values
$bs = array_map("serialize", $BX);
//get unique values
$bs_unique = array_unique($bs);
// revert back to two-dimensional array
$result = array_map("unserialize", $bs_unique);
var_dump($result);
更新根据编辑过的问题修改
// ok - this is a reproduction of the two arrays you've got
$BX_EMAIL = array(
"abc@pqr.com", "pqr@abc.com", "rst@hpq.com", "tps@lkc.com",
"pqr@abc.com","wps@gps.com", "tts@pps.com",
"abc@pqr.com", "wps@gps.com","tts@lpg.com");
$BX_NUM = array(10000,11223,10000,90909,90909,11223,88997,11223,10000,78789);
// create two-dimensional array
$BX = array();
for($i = 0; $i < count($BX_EMAIL); $i++)
$BX[] = array($BX_EMAIL[$i], $BX_NUM[$i]);
// find occurrences for each array
$occurrences_email = array_count_values($BX_EMAIL);
$occurrences_num = array_count_values($BX_NUM);
//filter BX on email and number only occurring once
$result = array_filter($BX, function($value) use(&$occurrences_email, &$occurrences_num) {
return $occurrences_email[$value[0]] == 1 && $occurrences_num[$value[1]] == 1;
});
var_dump($result);
$BX
的密钥仍然保留,因此您可能需要重置密钥:
$result = array_values($result);