我有两个相同维度的数组。数组中的每个值都是一个数字a或b。
获得相同维度的$array3的最快方法是:
如果这两个值都是a,
如果这两个值都是b,
如果值不同,则为0。
$array1 = array(a,b,b,a,a,b,a,b,a,a,b,b,a);
$array2 = array(a,b,a,b,a,a,b,a,b,b,a,b,a);
==================
$array3 = array(a,b,0,0,a,0,0,0,0,0,0,b,a);至于性能,我相信使用循环语句不是最好的方法。
我相信像60&13 = 12这样的东西可以以适当的方式使用,但我既不知道如何将它用于数组,也不知道如何将它用于大数字(如果数组很大的话)。或者,使用匿名函数是最好的?
对于最好的(但并非最不重要的)解决方案,有什么想法吗?谢谢。
发布于 2013-08-08 15:55:21
我想添加一个替代方法,使用array_diff_assoc
$temp = array_diff_assoc($array1,$array2); //array of elements in array1 that aren't the same as array2
$temp = array_combine(array_keys($temp),array_pad(array(),count($temp),0)); //replace the values with 0s
$array3 = $temp + $array2; //merge the arrays
ksort($array3); //put the elements back in orderhttps://stackoverflow.com/questions/18130307
复制相似问题