in_array

时间:2024-06-04 14:31:46编辑:笔记君

php判断数组元素是否存在

1、采用in_array(value,array,type)type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。$arr = array('可以','如何','方法','知道','没有','不要');//in_array(value,array,type)$isin = in_array("如何2",$arr);if($isin){echo "in====".$isin;}else{echo "out====".$isin;}2、array_key_exists 'array_key_exists() 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。array_key_exists(key,array3、array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。array_search(value,array,strict),当数据量比较大的时候,用array_key_exists比较合适,但占用的内存比较大,数组结构是: array(1, 2, 3, ..)和 array(1 => true, 2 => false, ..),内存使用比值为1:2。具体跟内部实现有关系,在php中第一种和第二种的数据结构类似,都是关联数组。

php 判断数组里是否有某个值

可以直接使用php内置函数in_array()来实现判断。php in_array 函数用于检查数组中是否存在某个值,如果存在,则返回true,否则返回false。大致的编程思路:1、所用到的函数:php in_array() 检查数组中是否存在某个值;in_array检查数组中是否存在某个值。2、基本语法:bool in_array(mixed $needle,array $haystack,bool $strict=FALSE)3、基本用法:在 haystack 中搜索 needle。needle 是必需的。因为规定要在数组搜索的值。如果是字符串,则比较是区分大小写的。 haystack 是必需的。因为规定要搜索的数组。 扩展资料:PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。PHP 语言作为当今最热门的网站程序开发语言,它具有成本低、速度快、可移植性好、 内置丰富的函数库等优点,因此被越来越多的企业应用于网站开发中。PHP其特点是具有公开的源代码, 在程序设计上与通用型语言,如C语言相似性较高,因此在操作过程中简单易懂,可操作性强。同时,PHP语言具有较高的数据传送处理水平和输出水平,可以广泛应用在Windows系统及各类Web服务器中。

如何高效检查一个数组中是否包含某个值

如何检查一个数组(未排序)中是否包含某个特定的值?在Java中,这是一个非常有用并又很常用的操作。同时,在StackOverflow中,有
时一个得票非常高的问题。在得票比较高的几个回答中,时间复杂度差别也很大。在下面的例子中,D瓜哥将展示每个方法花费的时间。

1、不同的实现方式

1) 使用List:

1 /**
2 * Coder:D瓜哥,http://www.diguage.com/
3 */
4
5 public static boolean useList(String[] arr, String targetValue) {
6 return Arrays.asList(arr).contains(targetValue);
7 }

2) 使用Set:

1 /**
2 * Coder:D瓜哥,http://www.diguage.com/
3 */
4
5 public static boolean useSet(String[] arr, String targetValue) {
6 Set set = new HashSet(Arrays.asList(arr));
7 return set.contains(targetValue);
8 }

3) 使用循环:

01 /**
02 * Coder:D瓜哥,http://www.diguage.com/
03 */
04
05 public static boolean useLoop(String[] arr, String targetValue) {
06 for (String s : arr) {
07 if (s.equals(targetValue)) {
08 return true;
09 }
10 }
11 return false;
12 }

4) 使用Arrays.binarySearch:

下面的代码是错误。但是,为了这个回答的完整性,还是将其列在这里。binarySearch()方法仅能用于已排序的数组。不过,你将会被下面的结果所震惊。

01 /**
02 * Coder:D瓜哥,http://www.diguage.com/
03 */
04
05 public static boolean useArraysBinarySearch(String[] arr, String targetValue) {
06 int a = Arrays.binarySearch(arr, targetValue);
07 if (a > 0) {
08 return true;
09 } else {
10 return false;
11 }
12 }

2、时间复杂度

使用如下代码来粗略比较不同实现间的时间复杂度。虽然不是很精确,但是思路确实正确的。我们将看看数组在有5、1k、10k个元素的情况下的不同表现。

01 /**
02 * Coder:D瓜哥,http://www.diguage.com/
03 */
04
05 public static void main(String[] args) {
06 String[] arr = new String[]{"CD", "BC", "EF", "DE", "AB"};
07
08 // use list
09 long startTime = System.nanoTime();
10 for (int i = 0; i < 100000; i++) {
11 useList(arr, "A");
12 }
13 long endTime = System.nanoTime();
14 long duration = endTime - startTime;
15 System.out.println("useList: " + duration / 1000000);
16
17 // use set
18 startTime = System.nanoTime();
19 for (int i = 0; i < 100000; i++) {
20 useSet(arr, "A");
21 }
22 endTime = System.nanoTime();
23 duration = endTime - startTime;
24 System.out.println("useSet: " + duration / 1000000);
25
26 // use loop
27 startTime = System.nanoTime();
28 for (int i = 0; i < 100000; i++) {
29 useLoop(arr, "A");
30 }
31 endTime = System.nanoTime();
32 duration = endTime - startTime;
33 System.out.println("useLoop: " + duration / 1000000);
34
35 // use Arrays . binarySearch ()
36 startTime = System.nanoTime();
37 for (int i = 0; i < 100000; i++) {
38 useArraysBinarySearch(arr, "A");
39 }
40 endTime = System.nanoTime();
41 duration = endTime - startTime;
42 System.out.println("useArrayBinary: " + duration / 1000000);
43 }

结果:

1 useList: 12
2 useSet: 65
3 useLoop: 2
4 useArrayBinary: 7

使用大一点的数组(1k个元素):

01 /**
02 * Coder:D瓜哥,http://www.diguage.com/
03 */
04
05 int length = 1000;
06 String[] arr = new String[length];
07
08 Random s = new Random();
09 for (int i = 0; i < length; i++) {
10 arr[i] = String.valueOf(s.nextInt());
11 }

结果:

1 useList: 115
2 useSet: 2010
3 useLoop: 97
4 useArrayBinary: 9

使用更大一点的元素(10k个元素):

01 /**
02 * Coder:D瓜哥,http://www.diguage.com/
03 */
04
05 int length = 10000;
06 String[] arr = new String[length];
07
08 Random s = new Random();
09 for (int i = 0; i < length; i++) {
10 arr[i] = String.valueOf(s.nextInt());
11 }

结果:

1 useList: 1678
2 useSet: 25609
3 useLoop: 1802
4 useArrayBinary: 10

D瓜哥注:

以下内容是安装原文翻译过来的。但是,从上面的结果来看,实际的表现和文章内容不太一样,D瓜哥自己的推断和文章介绍的是一样的。但是,实际测试的结果却截然不同。但是,至于为什么会出现这种问题,还需要进一步研究。

从上面的结果可以清晰看到,使用简单循环的相比使用其他集合操作更高效。很多很多开发人员使用第一种方法,但是它并不是最高效的。将数组转化成其他的任何集合类型都需要先将所有元素读取到集合类中,才能对这个集合类型做其他的事情。

当使用Arrays.binarySearch()方法时,数组必须是排好序的。如果数组不是排好序的,则不能使用这个方法。

事实上,如果你真的需要高效地检查一个数组或者集合中是否包含一个值,一个排好序的数组或者树可以达到O(log(n))的时间复杂度,HashSet甚至能达到O(1)的时间复杂度。


检查数组中是否包含某个元素

问题:你想知道数组中是否包含一个特定的值.方案:1:使用in_array():if(in_array($value , $array) ){//在数组$array中有一个值为$value的元素}2:创建一个关联数组用该值做下标.讨论:用in_array()来检查数组中是否有一个元素包含着特定的值:in_array()函数在默认情况下使用==操作符来比较两个项目是否相等.如果使用严格相等===标准,则须将true作为第三个参数传递给in_array();例子:$array = array(1,'2','three');in_array(0,$array);/*true 它之所以为真 是因为 将数字与字符串'three'进行比较,而PHP会把这字符串转换成一个整数因为它不是一个数字字符串(比如:'2' , '2faf' 这是数字字符串)所以就变成了0.因此,in_array()就认为存在一个匹配值.所以在把数字与包含字符串的数据比较时,最保险的方式是使用严格型比较(===)*/in_array(0,$array,true); //false;in_array(1,$array); // truein_array(1,$array,true); //true;in_array(2,$array); // truein_array(2,$array,true); //false;如果要在同一个数组上多次调用in_array()函数,可能使用关联数组更好一些,这个新的关联数组是以原始的数组元素作为键.用in_array()查寻时,所用的时间与数组项目成正比.而对于关联数组,时间则是恒定不变的.如果不能直接创建这个关联数组,而是需要从传统的整数数组进行转换,可以用array_flip()来包装这个数组中的键和值.也就是创建一个关联数组用到的值来做下标.把要查寻的值来当然下标找到该值就存在,不然不存在.$b = array('Emma','Pride and Prejudice','Northhanger Abbey');if( isset($b['Emma'] ){echo '也! 找到了';}elseecho '也! 没找到';


php中empty()与isset()的区别是什么?

其实你搜下基本就知道了。empty() 判断一个变量是否为“空”,isset() 判断一个变量是否已经设置。empty还会检测变量是否为空、为零。当一个变量值为0,empty() 认为这个变量同等于空,即相当于没有设置。例如: $id=0; empty($id)?print "It's empty .":print "It's $id ."; //结果:It's empty . print ""; !isset($id)?print "It's empty .":print "It's $id ."; //结果:It's 0 .


查找某个值是否存在于某个数组中的函数

这篇文章主要介绍了PHP使用in_array函数检查数组中是否存在某个值,较为详细的分析了in_array函数的功能、定义及相关的使用技巧与注意事项,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了PHP使用in_array函数检查数组中是否存在某个值的方法。分享给大家供大家参考。具体分析如下:

PHP使用in_array()函数检查数组中是否存在某个值,如果存在则返回 TRUE ,否则返回 FALSE了,非常的好用,下面我深入来为各位介绍in_array() 函数.

最近在用php写一段代码时,要用到判断某值是否在另外一组值中。而in_array 函数就是用来检查数组中是否存在某个值 。直接通过概念理解比较模糊,可以通过具体例子了解其作用。


Array函数的示例

该示例使用 Array函数来返回一个包含 Variant 的数组。Dim MyWeek, MyDayMyWeek = Array(Mon, Tue, Wed, Thu, Fri, Sat, Sun)'返回值假设下界的设置为 1(使用 Option Base' 语句)。MyDay = MyWeek(2) 'MyDay 的值为 Tue。MyDay = MyWeek(4) 'MyDay 的值为 Thu例子:当代码窗口输入如下:private sub form_clickdim aa = array(2,3,4,5)for i = 0 to 3print a(i);next iend sub则运行时会在窗体上显示:2 3 4 5

上一篇:hit u

下一篇:in域名