Home > Backend Development > PHP Problem > Filtering method for php multidimensional array

Filtering method for php multidimensional array

PHPz
Release: 2023-04-18 10:07:02
Original
915 people have browsed it

Processing data in PHP is a very common requirement, and multidimensional arrays are one of the common data structures. However, when using multi-dimensional arrays, we cannot avoid performing some data filtering operations to ensure the accuracy and legality of the data. This article will introduce the filtering method of multi-dimensional arrays in PHP.

1. Filtering method array_map

array_map() is a function provided by PHP that can pass each element in one or more arrays to a specified custom callback function. And returns a new array, the elements of which are the elements processed by the callback function.

We can use the array_map() function to implement multi-dimensional array filtering. The specific method is to first traverse the multi-dimensional array, pass the elements that need to be filtered to the filter function for processing, and then save the processed results to a new array. The following is a simple example:

// 多维数组
$data = array(
    array(
        'name' => '张三',
        'age' => 18,
        'sex' => 'male',
        'hobby' => array('swimming', 'reading', 'music'),
    ),
    array(
        'name' => '李四',
        'age' => 22,
        'sex' => 'female',
        'hobby' => array('swimming', 'dancing', 'shopping'),
    ),
);

// 过滤函数
function filter($item) {
    if (!is_array($item)) { 
        return trim($item); // 非数组的元素进行trim()处理
    } else { 
        return array_map('filter', $item); // 数组的元素递归调用filter()函数进行处理
    }
}

$new_data = array_map('filter', $data); // 过滤后的多维数组
Copy after login

In the above example, we defined a filter function filter(), which determines whether the element is an array and calls the trim() function provided by PHP on non-array elements. Processing, recursively calls itself to process the array elements, and finally saves the processed results to the new array $new_data through the array_map() function.

2. Filtering method array_walk_recursive

array_walk_recursive() is a function provided by PHP. It can apply a user-defined function to each element in a multi-dimensional array. This function receives two Parameters: The first parameter is the value of the current element, and the second parameter is the key name of the current element. In order to filter array data, we can use this function to recursively traverse the elements in the array one by one, and then process the elements that need to be filtered. The following is the sample code:

// 多维数组
$data = array(
    array(
        'name' => '张三',
        'age' => 18,
        'sex' => 'male',
        'hobby' => array('swimming', 'reading', 'music'),
    ),
    array(
        'name' => '李四',
        'age' => 22,
        'sex' => 'female',
        'hobby' => array('swimming', 'dancing', 'shopping'),
    ),
);

// 过滤函数
function filter(&$value, $key) {
    if (is_string($value)) {
        $value = trim($value); // 对字符串类型进行trim()处理
    }
}

array_walk_recursive($data, 'filter'); // 过滤后的多维数组
Copy after login

In the above example, we defined a callback function filter(), which accepts two parameters. The first parameter $value is the value of the current element, and the second parameter $key is the key name of the current element. Use the is_string() function to determine whether the current element is of string type. If so, call the trim() function provided by PHP for processing.

After the filter function is defined, we implement the traversal operation on the multi-dimensional array by calling the array_walk_recursive() function, pass each element to the callback function for processing, and finally obtain the filtered result.

3. Filtering method array_filter

array_filter() is a function provided by PHP that can filter a given array according to the specified callback function. It iterates through each element in the array and applies the callback function to each element. The return value is an array of elements that evaluate to TRUE in the callback function.

We can use the array_filter() function to filter multi-dimensional arrays. The specific method is to traverse the elements in the multi-dimensional array and save the elements that meet the filtering conditions into a new array. The following is a simple example:

// 多维数组
$data = array(
    array(
        'name' => '张三',
        'age' => 18,
        'sex' => 'male',
        'hobby' => array('swimming', 'reading', 'music'),
    ),
    array(
        'name' => '李四',
        'age' => 22,
        'sex' => 'female',
        'hobby' => array('swimming', 'dancing', 'shopping'),
    ),
);

// 过滤函数
function filter($item) {
    return (strlen($item['name']) > 2); // 过滤满足条件的元素
}

$new_data = array_filter($data, 'filter'); // 过滤后的多维数组
Copy after login

In the above example, we define a callback function filter(), which is used to process elements that need to be filtered. In the filter() function, we return TRUE for elements that meet a certain condition (here the length of 'name' is greater than 2), otherwise we return FALSE. After the filter function is defined, we call the array_filter() function and pass the array to be filtered and the filter function to get the filtered results.

In summary, we can use a variety of methods to filter multi-dimensional arrays, including functions such as array_map(), array_walk_recursive(), and array_filter(). Which method to choose depends on the specific application scenario and requirements.

The above is the detailed content of Filtering method for php multidimensional array. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template