php中的数组_diff有点不太正确
这是我遗传计算器的代码:php中的数组_diff有点不太正确,php,Php,这是我遗传计算器的代码: // Set up male dominant traits $maleDom = 'WT'; // Set up male recessive traits $maleRec = 'ba,b,ec'; // Set up male snow traits $maleSnow = ''; // Set up female dominant traits $femaleDom = 'WT'; // Set up female recessive traits $fema
// Set up male dominant traits
$maleDom = 'WT';
// Set up male recessive traits
$maleRec = 'ba,b,ec';
// Set up male snow traits
$maleSnow = '';
// Set up female dominant traits
$femaleDom = 'WT';
// Set up female recessive traits
$femaleRec = 'ba,b,mp';
// Set up female snow traits
$femaleSnow = '';
$maleRecArray = explode(',', $maleRec);
$femaleRecArray = explode(',', $femaleRec);
$nonMatchedRecessives = array_diff($maleRecArray, $femaleRecArray);
它抛出数组([2]=>ec)
。但是您可以看到,ec
和mp
存在于不同的数组中。因此,它肯定也应该显示mp
,因为它与其他阵列不同?请检查:
操作部分是:
将数组1与一个或多个其他数组进行比较,并返回
数组1中不存在于任何其他数组中的值
编辑:[回答第二个问题]从臀部开始:
$nonMatchedRecessivesMale = array_diff($maleRecArray, $femaleRecArray);
$nonMatchedRecessivesFemale = array_diff($femaleRecArray, $maleRecArray);
这就是答案。请阅读下面的详细内容。tldr<代码>数组_diff()是单向检查
$fullDiff = array_merge(array_diff($femaleRecArray,$maleRecArray), array_diff($maleRecArray, $femaleRecArray));
这是数组_diff()
的预期行为
您可以得到这两个数组之间的差异,因此无论哪种方式,ec
或mp
都是正确的
因此,这将为您提供两个阵列之间的差异:
array_diff($femaleRecArray,$maleRecArray)代码>和数组_diff($maleRecArray,$femaleRecArray)代码>
我刚换了他们的位置
array(3) {
[0]=>
string(2) "ba"
[1]=>
string(1) "b"
[2]=>
string(2) "ec"
}
array(3) {
[0]=>
string(2) "ba"
[1]=>
string(1) "b"
[2]=>
string(2) "mp"
}
array(1) {
[2]=>
string(2) "mp"
}
反复使用代码。您需要运行两次,按相反顺序比较两个数组,如下所示:
array_merge(array_diff($maleRecArray, $femaleRecArray), array_diff($femaleRecArray, $maleRecArray));
它吐出:
Array
(
[0] => ec
[1] => mp
)
好的,那么我如何才能找到两个数组中的差异呢?要获得两个数组中的差异,请执行函数两次,第二次反转参数,可以选择合并结果:$nonMatchedRecessives=array\u merge(array\u diff($maleRecArray,$femaleRecArray),array\u diff($femaleRecArray,$maleRecArray))代码>哦,这完全有道理!谢谢:为了扩展这个答案,这是因为array_diff()
比较了数组A中存在的元素和数组B中不存在的元素,因此需要对其进行双向区分。在这方面已经有问题了。