


Analysis of techniques to improve the efficiency of element search and element deduplication in PHP arrays, php array_PHP tutorial
Analysis of techniques to improve the efficiency of element search and element deduplication in PHP arrays, PHP arrays
Improve the efficiency of finding array elements
1.php in_array method description
php finds whether an array element exists, generally using the in_array method.
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
Parameter description:
needle
The value to be searched for. If needle is a string, the comparison is case-sensitive.
haystack
Array used for comparison
strict
If the value of the third parameter strict is TRUE, the in_array() function will also check whether the type of needle is the same as that in haystack
Return value
Returns TRUE if needle is found, FALSE otherwise.
2.Efficiency of finding elements in in_array
When the compared array haystack is large, in_array efficiency will be very low
Example: Use in_array to perform 1000 comparisons on an array of 100,000 elements
<?php $arr = array(); // 创建10万个元素的数组 for($i=0; $i<100000; $i++){ $arr[] = $i; } // 记录开始时间 $starttime = getMicrotime(); // 随机创建1000个数字使用in_array比较 for($j=0; $j<1000; $j++){ $str = mt_rand(1,99999); in_array($str, $arr); } // 记录结束时间 $endtime = getMicrotime(); echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>'; /** * 获取microtime * @return float */ function getMicrotime(){ list($usec, $sec) = explode(' ', microtime()); return (float)$usec + (float)$sec; } ?>
run time:2003.6449432373ms
Use in_array to determine whether an element exists. Compare 1000 times in an array of 100,000 elements. The running time takes about 2 seconds
3. Methods to improve the efficiency of finding elements
We can first use array_flip to perform key-value exchange, and then use the isset method to determine whether the element exists, which can improve efficiency.
Example: Use array_flip to perform key-value exchange first, then use the isset method to judge, and compare 1000 times in an array of 100,000 elements
<?php $arr = array(); // 创建10万个元素的数组 for($i=0; $i<100000; $i++){ $arr[] = $i; } // 键值互换 $arr = array_flip($arr); // 记录开始时间 $starttime = getMicrotime(); // 随机创建1000个数字使用isset比较 for($j=0; $j<1000; $j++){ $str = mt_rand(1,99999); isset($arr[$str]); } // 记录结束时间 $endtime = getMicrotime(); echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>'; /** * 获取microtime * @return float */ function getMicrotime(){ list($usec, $sec) = explode(' ', microtime()); return (float)$usec + (float)$sec; } ?>
run time:1.2781620025635ms
Use array_flip and isset to determine whether an element exists. Compare 1000 times in an array of 100,000 elements. The running time takes about 1.2 milliseconds
Therefore, for comparison of large arrays, using array_flip and isset methods will be much more efficient than in_array.
Quickly remove duplicates
1. Use array_unique method to remove duplicates
To deduplicate array elements, we generally use the array_unique method. This method can deduplicate elements in the array.
<?php $arr = array(1,1,2,3,3,3,4,4,5,6,6,7,8,8,9,9,9); $arr = array_unique($arr); $arr = array_values($arr); print_r($arr); ?>
Output:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 )
After deduplication, the key values will be out of order. You can use array_values to reorder the key values.
2. Use array_unique method to remove duplicates for efficiency
<?php $arr = array(); // 创建100000个随机元素的数组 for($i=0; $i<100000; $i++){ $arr[] = mt_rand(1,99); } // 记录开始时间 $starttime = getMicrotime(); // 去重 $arr = array_unique($arr); // 记录结束时间 $endtime = getMicrotime(); $arr = array_values($arr); echo 'unique count:'.count($arr).'<br>'; echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>'; echo 'use memory:'.getUseMemory(); /** * 获取使用内存 * @return float */ function getUseMemory(){ $use_memory = round(memory_get_usage(true)/1024,2).'kb'; return $use_memory; } /** * 获取microtime * @return float */ function getMicrotime(){ list($usec, $sec) = explode(' ', microtime()); return (float)$usec + (float)$sec; } ?>
unique count:99 run time:653.39303016663ms use memory:5120kb
Use the array_unique method to remove duplicates. The running time takes about 650ms and the memory usage is about 5m
3. Faster array deduplication method
PHP has a key-value exchange method array_flip. We can use this method to remove duplicates. Because of key-value exchange, the original duplicate values will become the same key.
Then perform a key-value exchange again, and exchange the keys and values back to complete the deduplication.
<?php $arr = array(); // 创建100000个随机元素的数组 for($i=0; $i<100000; $i++){ $arr[] = mt_rand(1,99); } // 记录开始时间 $starttime = getMicrotime(); // 使用键值互换去重 $arr = array_flip($arr); $arr = array_flip($arr); // 记录结束时间 $endtime = getMicrotime(); $arr = array_values($arr); echo 'unique count:'.count($arr).'<br>'; echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>'; echo 'use memory:'.getUseMemory(); /** * 获取使用内存 * @return float */ function getUseMemory(){ $use_memory = round(memory_get_usage(true)/1024,2).'kb'; return $use_memory; } /** * 获取microtime * @return float */ function getMicrotime(){ list($usec, $sec) = explode(' ', microtime()); return (float)$usec + (float)$sec; } ?>
unique count:99 run time:12.840032577515ms use memory:768kb
Use the array_flip method to remove duplicates. The running time takes about 18ms and the memory usage is about 2m
Therefore, using the array_flip method to remove duplicates reduces the running time by 98% compared to using the array_unique method, and the memory usage is reduced by 4/5;
Articles you may be interested in:
- php method to find a specified value in an array
- Use of php array search functions in_array(), array_search(), array_key_exists() Example
- php array function sequence in_array() to find whether the array value exists
- php array function sequence array_key_exists() - to find whether the array key name exists
- PHP array Faster implementation of duplication
- PHP two-dimensional array merging and deduplication methods
- php bubble sort, quick sort, quick search, two-dimensional array deduplication example sharing
- PHP array deduplication examples and analysis
- PHP array deduplication function code
- PHP two-dimensional array deduplication problem analysis
- PHP array comparison implementation to find continuous numbers The method
- php uses the array_search function to implement array search

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
