所以这是我遗传算法的代码:
// 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);
抛出Array ( [2] => ec )
。但是您可以看到ec
和mp
存在于不同的数组中。所以它肯定应该显示mp
,因为它与另一个数组不同?
答案 0 :(得分:2)
你需要运行它两次,以相反的顺序比较2个数组,如下所示:
array_merge(array_diff($maleRecArray, $femaleRecArray), array_diff($femaleRecArray, $maleRecArray));
哪个吐出来:
Array
(
[0] => ec
[1] => mp
)
答案 1 :(得分:0)
请检查:http://php.net/manual/en/function.array-diff.php
操作部分是:
将array1与一个或多个其他数组进行比较并返回 array1中的值,不存在于任何其他数组中。
编辑:[回答你的第二个问题]来自时髦:
$nonMatchedRecessivesMale = array_diff($maleRecArray, $femaleRecArray);
$nonMatchedRecessivesFemale = array_diff($femaleRecArray, $maleRecArray);
答案 2 :(得分:0)
这就是答案。请阅读下面的详细信息。 tldr; array_diff()
是单程检查。
$fullDiff = array_merge(array_diff($femaleRecArray,$maleRecArray), array_diff($maleRecArray, $femaleRecArray));
这是array_diff()
的预期行为。
你得到了这两个数组之间的区别,所以无论哪种方式,ec
或mp
都是正确的。
所以这给你两个数组之间的区别:
array_diff($femaleRecArray,$maleRecArray);
和array_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"
}
使用代码here。