我试图找到多个数组之间的交集值.
例如
code1 = [1,2,3]
code2 = [2,3,4]
code3 = [0,2,6]
Run Code Online (Sandbox Code Playgroud)
结果将是2
我知道在PHP中你可以用array_intersect做到这一点
我希望能够轻松添加额外的数组,所以我真的不想使用多个循环
有任何想法吗 ?
谢谢,亚历克斯
是否有内置函数来获取阵列2中不存在的阵列1的所有成员?
我知道如何以编程方式执行它,只是想知道是否有内置函数执行相同操作.所以请,没有代码示例.
我有两个看起来像这样的数组:
Array
(
[0] => Array
(
[name] => STRING
[value] => STRING
)
[1] => Array
(
[name] => STRING
[value] => STRING
)
[2] => Array
(
[name] => STRING
[value] => STRING
)
)
Run Code Online (Sandbox Code Playgroud)
我希望能够通过比较两个主数组中子数组的ID来复制array_intersect.到目前为止,我的尝试并没有成功.:(
我正在尝试与任意数量的PHP数组相交,其数量取决于用户提供的参数,每个参数都可以包含任意数量的元素.
例如:array1(1,2,3,4,5)array2(2,4,6,8,9,23)array3(a,b,3,c,f)... arrayN(x1,x2, x3,x4,x5 ...... xn)
由于array_intersect接受了一个params列表,我无法构建一个数组数组来交叉,并且必须绕过它.我想这个解决方案:http://bytes.com/topic/php/answers/13004-array_intersect-unknown-number-arrays但这并没有工作,因为报告的错误array_intersect需要2个或更多PARAMS.
有没有人知道如何以尽可能简单的方式处理这个问题?
我有以下两个数组:
$array_one = array('colorZero'=>'black', 'colorOne'=>'red', 'colorTwo'=>'green', 'colorThree'=>'blue', 'colorFour'=>'purple', 'colorFive'=>'golden');
$array_two = array('colorOne', 'colorTwo', 'colorThree');
Run Code Online (Sandbox Code Playgroud)
我想要一个数组,$array_one其中只包含其键是$ array_two成员的键值对(通过创建一个新数组或从其中删除其余元素$array_one)
我怎样才能做到这一点?
我看着array_diff和array_intersect,但他们比较值与值,而不是一个数组的值与其它的按键.
可能重复:
检查数组是否包含另一个数组的所有元素
我之前已经向Stackoverflow发布了这样的内容,但答案并不能完全满足我.这就是为什么我再次发布问题,但一直在改变问题.
有些人帮我构造了一个函数,它检查array($GroupOfEight[$i])一个多维元素是否array($GroupOfEight)等于另一个数组($ stackArray),忽略数组中的数字顺序.
但是,我需要检查的是所提到的是否array($stackArray)包含array($GroupOfEight[$i])多维中的任何一个array($GroupOfEight),这意味着main array($stackArray)可以包含更多的元素subarrays($GroupOfEight[$i]).
这是我到目前为止收集的一个工作代码,但需要修改为我想要的版本:
<?php
$GroupOfEight = array (
array(0,1,3,2,4,5,7,6),
array(4,5,6,7,15,12,13,14),
array(12,13,15,14,8,9,11,10),
array(2,6,14,10,3,7,15,11),
array(1,3,5,7,13,15,9,11),
array(0,4,12,8,1,5,13,9),
array(0,1,3,2,8,9,11,10)
);
$stackArray = array(0,4,12,1,9,8,5,13,9,2,5,2,10);
/*$stackArray gets value with POST Method by URL parameter.
This is just the example. As you see this array contains
$GroupOfEight[4], and also it contains many other numbers.*/
/* The function given below checks if $stackArray equals any
of the subarrays of $GroupOfEight. …Run Code Online (Sandbox Code Playgroud) 我有两个平面列表,其中一个包含重复值.例如,
array1 = [1,4,4,7,10,10,10,15,16,17,18,20]
array2 = [4,6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)
我需要在array1中找到也在array2中的值,在array1中保留重复数据.期望的结果将是
result = [4,4,7,10,10,10]
Run Code Online (Sandbox Code Playgroud)
我想避免循环,因为实际数组将包含数百万的值.我尝试了各种设置和交叉组合,但是无法保留重复项.
任何帮助将不胜感激!
我正在设计一个电气工程应用.但是,我坚持这个:我有以下数组
<?php
// Static Array
$GroupOfEight = array (
array(0,1,3,2,4,5,7,6),
array(4,5,6,7,16,12,13,14),
array(12,13,15,14,8,9,11,10),
array(2,6,14,10,3,7,15,11),
array(1,3,5,7,13,15,9,11),
array(0,4,12,8,1,5,13,9),
array(0,1,3,2,8,9,11,10)
);
?>
Run Code Online (Sandbox Code Playgroud)
我有另一个阵列,但这个是一维的.
<?php
$myStack = array(0,1,3,2,4,5,7,6); //Dynamic, gets value by POST method.
?>
Run Code Online (Sandbox Code Playgroud)
我想要做的是检查$ myStack是否等于$ GroupOfEight数组的任何子数组.(数字排序并不重要.脚本应该只检查每个元素是否包含.如果它们的顺序相同,那就不重要了.)
以下是我到目前为止解决这个问题的方法:
<?php
//Check if stackArray contains 8group
for($i=0; $i<count($GroupOfEight);$i++)
for($j=0; $j<count($GroupOfEight[$i]); $j++){
//$containsSearch = count(array_intersect($search_this,$all)) == count($search_this);
$containsSearch = count(array_intersect($stackArray,$GroupOfEight[$j])) == count($stackArray);
echo $containsSearch;
}
?>
Run Code Online (Sandbox Code Playgroud)
请帮我纠正我的代码或向我介绍这个问题的解决方案,谢谢.
编辑:它应该只提供1个索引号.例如,stackArray是0,1,3,2,4,1,2,3,它应该找到匹配相同数字的GroupOfEight [N],而不管数字的顺序如何.如果有匹配的情况,我应该得到N.
我需要计算对应于两个大字符串数组的交集的元素数量,并且非常快.
我使用以下代码:
arr1[i].Intersect(arr2[j]).Count()
Run Code Online (Sandbox Code Playgroud)
对于CPU时间,VS Profiler指示
System.Linq.Enumerable.Count()System.Linq.Enumerable.Intersect()不幸的是,完成所有工作可能需要数小时.
怎么做得更快?
什么,以及多少,更快 - 手动迭代数组foreach并检查needle出现in_array()或使用array_intersect()?
array-intersect ×10
arrays ×8
php ×7
benchmarking ×1
c# ×1
compare ×1
duplicates ×1
loops ×1
optimization ×1
performance ×1
python ×1
ruby ×1