【问题标题】:Search inside arrays, count, find duplicates, compare [closed]在数组中搜索、计数、查找重复项、比较 [关闭]
【发布时间】:2010-09-04 23:44:18
【问题描述】:
关于简单和多维数组的几个如何问题:
1) 如何在简单数组和多数组中进行搜索?
2) 如何统计搜索结果的数量?
3) 如何捕捉内部重复:
3.1 multidimensional array?
3.2 simple array?
3.3 in array's search results?
3.4 and remove them?
4) 如何比较两个数组(也是多维的?
【问题讨论】:
标签:
php
arrays
count
multidimensional-array
compare
【解决方案1】:
- 要搜索一个值是否存在于简单数组中,只需使用
in_array,要获取值的键,使用array_search。对于多维数组,编写一个递归函数,它将搜索值,如果值是数组(子数组)则递归。
- 让上述函数返回找到的总数,并将所有子递归返回值相加。
- 要捕获重复项:
- 多维数组:与上述概念相同的递归函数
- 简单数组:键肯定不会重复,并使用
array_unique 删除重复项(您可以检查前后数组长度以查看是否删除了任何内容,这意味着找到了重复项)。
- 搜索结果应该是一个简单的数组,传给上面那个。
- 删除它们;
array_unique 如上所述。
- 比较数组:
array_ intersect 和 array_ diff,对于多维使用这些函数用户回调变化来实现您想要的。
也可以看看PHP Array Functions。
【解决方案2】:
要删除重复项,试试这个:array_unique
统计搜索结果数:
$values = array_count_values($array);
$count = $values[$value]; //$value is what you search for
【解决方案3】:
搜索: array_search
重复: in_array
比较: array_diff 或 array_intersect
至于它们的多维对应物 - 只需滚动浏览每个功能页面底部的用户 cmets,您一定会找到某人提供的不错的功能。
对于数组中键的数量,您可以简单地使用count() 函数,因为它接受数组。因此,要计算您的搜索结果,您可以执行以下操作:
count(array_search("1", $array)); //1 being the needle and $array the haystack