In PHP, a two-dimensional array refers to an array containing multiple arrays, that is, the elements in the array are arrays, and its form is as follows:
$students = array( array('id' => 1, 'name' => '张三', 'age' => 18), array('id' => 2, 'name' => '李四', 'age' => 19), array('id' => 3, 'name' => '王五', 'age' => 20), array('id' => 4, 'name' => '张三', 'age' => 18) );
In a two-dimensional array, we may encounter To duplicate elements, in this case, we need to remove the duplicates. So, how to remove weight?
Method 1: Use the array_unique function
The array_unique function can remove duplicate values in the array, but it can only be used for one-dimensional arrays, so it needs to be processed on the two-dimensional array. The specific idea is as follows:
We can traverse each subarray in the two-dimensional array, convert it to a string, and save it to a new array. Then, the new array is deduplicated, and the final result is a deduplicated two-dimensional array.
The code is implemented as follows:
function unique_array($array) { $temp = array(); foreach ($array as $key => $value) { $temp[$key] = implode(',', $value); } $temp = array_unique($temp); $result = array(); foreach ($temp as $key => $value) { $result[$key] = explode(',', $value); } return $result; } $students = array( array('id' => 1, 'name' => '张三', 'age' => 18), array('id' => 2, 'name' => '李四', 'age' => 19), array('id' => 3, 'name' => '王五', 'age' => 20), array('id' => 4, 'name' => '张三', 'age' => 18) ); $result = unique_array($students); print_r($result);
The output result is as follows:
Array ( [0] => Array ( [id] => 1 [name] => 张三 [age] => 18 ) [1] => Array ( [id] => 2 [name] => 李四 [age] => 19 ) [2] => Array ( [id] => 3 [name] => 王五 [age] => 20 ) )
Method 2: Use array_reduce function
array_reduce function can merge two-dimensional arrays into one dimension array and perform deduplication operations on it. The specific idea is as follows:
We can first convert each sub-array in the two-dimensional array into a string and save it to a new array. Then, use the array_reduce function to combine the new arrays into a string, and use the array_unique function to deduplicate the string. Finally, use the explode function to convert the deduplicated string into a two-dimensional array.
The code is implemented as follows:
function unique_array($array) { $temp = array(); foreach ($array as $key => $value) { $temp[$key] = implode(',', $value); } $result = array_reduce($temp, function($carry, $item){ if (!in_array($item, $carry)) { $carry[] = $item; } return $carry; }, array()); $result = array_map(function($item) { return explode(',', $item); }, $result); return $result; } $students = array( array('id' => 1, 'name' => '张三', 'age' => 18), array('id' => 2, 'name' => '李四', 'age' => 19), array('id' => 3, 'name' => '王五', 'age' => 20), array('id' => 4, 'name' => '张三', 'age' => 18) ); $result = unique_array($students); print_r($result);
The output results are as follows:
Array ( [0] => Array ( [id] => 1 [name] => 张三 [age] => 18 ) [1] => Array ( [id] => 2 [name] => 李四 [age] => 19 ) [2] => Array ( [id] => 3 [name] => 王五 [age] => 20 ) )
Summary
The above are the two methods of deduplication of two-dimensional arrays in PHP. Both methods use PHP's built-in functions, and the specific implementation ideas are relatively simple. It should be noted that when using the array_reduce function, you need to use the array_map function to convert the deduplicated string into a two-dimensional array.
The above is the detailed content of How to remove duplicates from php two-dimensional array. For more information, please follow other related articles on the PHP Chinese website!