在两个 php 数组中具有唯一值的唯一用户

Unique user having unique values in two php arrays

我将立即转到查询。我有一个 html 表单,其中有两个字段(电子邮件和数字 ID)向每个用户询问。每行中的两个值可以不同或完全相同。该表单是动态的,并且根据要求要求提供多个电子邮件和数字 ID。这两个值都被处理为 php 数组(电子邮件数组和数字数组)。我请求大家帮我解决这个问题是为了找出具有唯一电子邮件的 UNIQUE ROW,并且相关的数值在整个数组中也应该是唯一的。

请帮帮我,这对我来说很重要。 提前谢谢。表格示例如下:

 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.abc@pqr.com10000
 2.pqr@abc.com11223
 3.第一个@hpq.com10000
 4. tps@lkc.com 90909
 5.pqr@abc.com90909
 6.wps@gps.com11223
 7. tts@pps.com 88997
 8.abc@pqr.com11223
 9.wps@gps.com10000
 10.tts@lpg.com78789

现在,上面输入的输出应该是-
按照人工检查只有10行,结果如下 -

abc@pqr.com
10000

abc@pqr.com
11223

wps@gps.com
10000

第一@hpq.com
10000

wps@gps.com
11223

pqr@abc.com
11223

pqr@abc.com
90909

tps@lkc.com
90909

************************

tts@lpg.com
78789

************************

tts@pps.com
88997

现在在上面的输出中有三组 - 第一组相同,因为彼此有相同的 NUM 和 EMAIL,这使得记录相同。但是,第二组和第三组在任何地方都没有任何记录。这是我要求的预期分离输出。

我希望这次我已经足够清楚了。现在请根据情况多考虑一下

根据您提供的信息,我认为这个解决方案就足够了:

// 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);

UPDATE 根据已编辑的问题修改

// 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);