数组是很常用的一个数据结构,而且经常需要判断某个元素是否在数组中,这在PHP中有很多种方法,有:
- foreach循环遍历数据
- in_array()
- array_search()
- isset()
- array_key_exists()
还有其他方法,这里就不说了。我们在网上搜索相关问题基本都是清一色的教我们如何使用in_array()函数,好像PHP中判断数组包含某个元素只有这一种方式似的,这次本文就来分析下除foreach外其他四种方式的执行效率。
具体四种函数如何使用就不多介绍了,我想看我文章的都不是LV1级别的吧,如果不懂请自行查阅php.net网站。
测试方法
随机生成一个大数组,然后任取一些元素分别调用上面的几个函数判断是否在生成的大数组内,记录下运行时消耗的最大内存和执行时间。
测试环境
PHP 7.2.34 (cli) (built: Mar 14 2021 18:35:27) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.34, Copyright (c) 1999-2018, by Zend Technologie
测试代码
下面函数创建随机字符的数组:
function random_str( $cnt = 1000, $length = 8 ) {
$chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!',
'@', '#', '