Home  >  Article  >  Backend Development  >  How to delete several subarrays in a two-dimensional array in php

How to delete several subarrays in a two-dimensional array in php

PHPz
PHPzOriginal
2023-04-18 10:26:08530browse

In PHP, sometimes we need to delete several arrays from a two-dimensional array. This requirement is relatively common. For example, we need to ignore some specific data, or filter out some data that does not meet the requirements from the original data set. This article will introduce how to use PHP built-in functions and custom functions to delete some arrays in a two-dimensional array.

1. PHP built-in function array_filter() deletes several arrays in a two-dimensional array

PHP built-in function array_filter() can filter out certain elements in an array and return a new array. When deleting several arrays in a two-dimensional array, we can use this function to achieve it. The following is an example:

$array = [
    ['id' => 1, 'name' => 'Alice', 'gender' => 'female'],
    ['id' => 2, 'name' => 'Bob', 'gender' => 'male'],
    ['id' => 3, 'name' => 'Charlie', 'gender' => 'male'],
    ['id' => 4, 'name' => 'David', 'gender' => 'male']
];

$exclude_ids = [2, 3];

$new_array = array_filter($array, function($item) use ($exclude_ids) {
    return !in_array($item['id'], $exclude_ids);
});

print_r($new_array);

In this example, we have a two-dimensional array $array containing 4 subarrays, and we want to delete the subarrays with ids 2 and 3 from it. We define the $exclude_ids array to contain the id values ​​that need to be deleted. Then we use the array_filter() function and pass it to a closure function. This function checks if the 'id' value in the subarray is in the $exclude_ids array and returns false if it is, otherwise it returns true. In addition, we also use the use statement so that the closure function can access the $exclude_ids array. Finally, we get a new array containing only subarrays with 'id' values ​​other than 2 and 3.

2. Custom function to delete several arrays in a two-dimensional array

In addition to using built-in functions, we can also write our own functions to delete several arrays in a two-dimensional array. This allows for more flexible control over deletion methods and conditions. The following is an example:

function exclude_subarrays($array, $condition) {
    $new_array = [];
    foreach($array as $key => $subarray) {
        $should_exclude = true;
        foreach($condition as $k => $v) {
            if($subarray[$k] !== $v) {
                $should_exclude = false;
                break;
            }
        }
        if(!$should_exclude) {
            $new_array[] = $subarray;
        }
    }
    return $new_array;
}

$array = [
    ['id' => 1, 'name' => 'Alice', 'gender' => 'female'],
    ['id' => 2, 'name' => 'Bob', 'gender' => 'male'],
    ['id' => 3, 'name' => 'Charlie', 'gender' => 'male'],
    ['id' => 4, 'name' => 'David', 'gender' => 'male']
];

$exclude_condition = ['id' => 2, 'gender' => 'male'];

$new_array = exclude_subarrays($array, $exclude_condition);

print_r($new_array);

In this example, we also have a two-dimensional array $array containing 4 subarrays, and we need to delete the subarray with id 2 and gender male. We wrote a function called exclude_subarrays to accomplish this task. This function accepts two parameters: the original array $array and an associative array $condition containing the deletion condition. Inside the function, we create an empty new array $new_array, and then use foreach to traverse all subarrays in the original array. For each subarray, we define a $should_exclude flag, which is set to true when initialized. We also use a foreach to traverse and delete each key-value pair in the condition $condition. For each key-value pair, we check whether the corresponding key in the current subarray is equal to the required value. If it is equal, it means that this subarray should be deleted, so set the $should_exclude flag to false and jump out of the loop. Otherwise, continue checking the next key-value pair. After completing the check of the entire $condition array, if $should_exclude is still true, it means that the current subarray does not need to be deleted, so it is added to the $new_array array. Finally, just return the new array.

Summary

The above are two ways to delete several arrays in a two-dimensional array. Although the built-in function array_filter() is shorter, the custom function is more flexible and may be more suitable in certain situations. During use, you should choose flexibly according to the actual situation.

The above is the detailed content of How to delete several subarrays in a two-dimensional array in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn