Home > Article > Backend Development > PHP finds the key in a two-dimensional array in one loop
PHP, as a powerful programming language, has rich data structures, among which two-dimensional array is a commonly used data structure. In daily development, we often need to traverse a two-dimensional array to find its key data. However, if nested loops are used for each traversal, the time complexity will become very high. This article will introduce a method to find the key value of a two-dimensional array in one loop.
A two-dimensional array is a special type of array that contains multiple arrays and organizes elements in rows and columns. A two-dimensional array can be thought of as a matrix consisting of multiple one-dimensional arrays, where each element can be accessed by a row index and a column index. In PHP, a two-dimensional array can be defined in the following way:
$arr = array( array(1, 2, 3), array(4, 5, 6), array(7, 8, 9) );
The above code defines a $arr two-dimensional array, which contains three one-dimensional arrays, each one-dimensional array has three elements. .
In the traditional two-dimensional array traversal method, it is usually necessary to use two nested loops, one for traversing rows , and the other one is used to iterate over the columns. For example:
foreach ($arr as $key1 => $value1) { foreach ($value1 as $key2 => $value2) { if ($value2 == $target) { echo "关键值所在的行为:" . $key1 . "<br>"; echo "关键值所在的列为:" . $key2 . "<br>"; } } }
In the above code, we use a foreach loop to iterate through each element in the $arr array. The first loop iterates through the rows and the second loop iterates over the columns. When the target element $target is found, output the row and column where the element is located.
However, the time complexity of this method is $O(n^2)$, that is, as the array size increases, the number of loops increases exponentially.
Now, we introduce a more efficient method that can find the key value in a two-dimensional array in just one loop . This method is based on some array functions provided by PHP and has the advantage of a time complexity of $O(n)$.
First, we need to use PHP's array_map function to convert the two-dimensional array into a one-dimensional array, and then use the array_search function to find the target value in the one-dimensional array. The code is as follows:
// 将二维数组转成一维数组 $array = array_reduce($arr, 'array_merge', array()); // 在一维数组中查找目标值 $key = array_search($target, $array); // 计算目标值所在的行和列 $row = floor($key / count($arr[0])); $col = $key % count($arr[0]); echo "关键值所在的行为:" . $row . "<br>"; echo "关键值所在的列为:" . $col . "<br>";
In the above code, we use the array_reduce function to convert the two-dimensional array into a one-dimensional array. The array_search function finds the target value in the one-dimensional array and calculates the target value in the two-dimensional array. rows and columns in .
The time complexity of this method is $O(n)$. Compared with the traditional method, the performance has been greatly improved.
This article introduces an efficient method that can find the key value of a two-dimensional array in one loop. By using some array functions provided by PHP, we reduced the time complexity from $O(n^2)$ to $O(n)$, greatly improving the performance of the program. I hope this article is helpful for traversing and searching two-dimensional arrays in PHP.
The above is the detailed content of PHP finds the key in a two-dimensional array in one loop. For more information, please follow other related articles on the PHP Chinese website!