Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在两个php数组中具有唯一值的唯一用户_Php_Arrays_Unique - Fatal编程技术网

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

在两个php数组中具有唯一值的唯一用户,php,arrays,unique,Php,Arrays,Unique,我将立即转到查询。我有一个html表单,有两个字段(电子邮件和数字id),每个用户都会询问。每行中的两个值可以不同,也可以完全相同。该表单是动态的,根据要求,需要多封电子邮件和数字ID。这两个值都作为php数组(电子邮件数组和数字数组)处理。我请求大家帮助我完成查询,以找出具有唯一电子邮件的唯一行,并且关联的数值在整个数组中也应该是唯一的 请帮帮我,这对我来说太重要了。 提前准备好。表格示例如下: 1.电子邮件-1 num-1 2.电子邮件-2 num-2 3.电子邮件-3 num-3 4.电子

我将立即转到查询。我有一个html表单,有两个字段(电子邮件和数字id),每个用户都会询问。每行中的两个值可以不同,也可以完全相同。该表单是动态的,根据要求,需要多封电子邮件和数字ID。这两个值都作为php数组(电子邮件数组和数字数组)处理。我请求大家帮助我完成查询,以找出具有唯一电子邮件的唯一行,并且关联的数值在整个数组中也应该是唯一的

请帮帮我,这对我来说太重要了。 提前准备好。表格示例如下: 1.电子邮件-1 num-1 2.电子邮件-2 num-2 3.电子邮件-3 num-3 4.电子邮件-4 num-4 5.电子邮件-2 num-1 6.电子邮件-4 num-1 7.电子邮件-5 num-5 8.电子邮件-2 num-1 现在,我们必须寻找唯一的一行或多行。。。这些输入可以是数百个

这就是我在下一页显示数组值的方式-

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 } ?>

很好的故事,到目前为止您尝试了什么?如何在数组中存储值?请提供示例输入和预期输出,谢谢您的关注。很抱歉,我是php的新手之一,仍然尝试了php.net中的一些数组函数,但没有达到任何地方。我把它们放在回路里感到困惑。因此,我将感谢您从头开始的帮助。我现在拥有的-表单和值可以显示在下一页上。不知道其他的…有什么建议/帮助吗?杰克,福斯特小姐……我没有否决你的问题。你说的“独一无二”是指只发生一次吗?嗨,福斯特小姐,首先非常感谢你为寻求帮助而付出的努力和时间。我很抱歉,但您提供的解决方案是半途而废的,仅适用于电子邮件值。假设NUM的值都相同,那么它不会显示唯一行,因为当时没有唯一行。是否要将唯一电子邮件和唯一数字分开?我认为两者的结合会产生实际值。是的,两者的结合会产生实际值,但某一行的两个输入应该分别不同于其他行,以使该行唯一。啊!它在你的机器上工作吗?我很抱歉,但它在屏幕上没有显示任何内容。看起来像是语法错误或其他什么。是的,它正在工作。您正在运行哪个PHP版本?启用错误报告。
// 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);
$result = array_values($result);