Home >Backend Development >PHP Problem >Is it possible to find a specified value in a php multidimensional array?

Is it possible to find a specified value in a php multidimensional array?

PHPz
PHPzOriginal
2023-04-24 15:51:06722browse

In PHP, array is a very common data structure, and multidimensional array is a special form of array. A multidimensional array can be regarded as an array, and each element stores an array. In actual development, we sometimes need to find a specified element in a multi-dimensional array. To achieve this purpose, PHP provides some built-in functions and operators.

This article will introduce the method of finding specified elements in multi-dimensional arrays in PHP, and provide some code samples to help readers better understand and apply related knowledge.

1. Use the array_search function to find the specified value

PHP provides a built-in function array_search(), which can be used to find the specified value in the array without the need for us to manually traverse the array. This function uses a "relaxed comparison" method to search, that is, using == for comparison instead of using the congruence symbol ===. The following is a sample code to find a specified value in a multidimensional array:

/**
 * 查找多维数组中指定值
 *
 * @param mixed $needle 需要查找的值
 * @param array $haystack 目标多维数组
 * @return mixed 返回找到的键名,如果未找到则返回false
 */
function searchValueInMultidimensionalArray($needle, $haystack)
{
    foreach ($haystack as $key => $value) {
        $currentKey = $key;
        if ($needle == $value || (is_array($value) && searchValueInMultidimensionalArray($needle, $value) !== false)) {
            return $currentKey;
        }
    }
    return false;
}

// 示例用法
$multidimensionalArray = [
    'a' => [
        'b' => 'c',
        'd' => 'e'
    ],
    'f' => [
        'g' => [
            'h' => 'i',
            'j' => 'k'
        ]
    ]
];

$searchValue = 'e';
$result = searchValueInMultidimensionalArray($searchValue, $multidimensionalArray);
echo $result; // 输出a/d

In the above sample code, we have defined a custom function named searchValueInMultidimensionalArray() to find a specified value in a multidimensional array. This function uses a recursive method to traverse, and uses the array_search() function during each traversal to find whether the current array element contains the value to be found.

2. Use the array_filter function to find the specified key name or key value

In addition to finding a certain element, sometimes we also need to find a list of elements in a multi-dimensional array that meet the specified conditions. PHP provides a built-in function array_filter(), which can be used to filter elements that meet specific conditions, and you can also specify the key name or key value to be searched.

The following is a sample code to find the specified key name in a multi-dimensional array:

// 示例数组
$multidimensionalArray = [
    'a' => [
        'b' => 'c',
        'd' => 'e'
    ],
    'f' => [
        'g' => [
            'h' => 'i',
            'j' => 'k'
        ]
    ]
];

// 查找键名为'b'的元素
$searchKey = 'b';
$filteredArray = array_filter($multidimensionalArray, function ($value, $key) use ($searchKey) {
    return $key == $searchKey;
}, ARRAY_FILTER_USE_KEY);

print_r($filteredArray);

The above code will output the following results:

Array
(
    [a] => Array
        (
            [b] => c
        )

)

In the above code, we use array_filter () function, and uses the $keys parameter in the callback function to represent the key name of the current array element, and then uses this key name to compare with the search key name ($searchKey) we specified.

In addition, we can also use the $ureKey parameter to find the specified key value. The sample code is as follows:

// 示例数组
$multidimensionalArray = [
    'a' => [
        'b' => 'c',
        'd' => 'e'
    ],
    'f' => [
        'g' => [
            'h' => 'i',
            'j' => 'k'
        ]
    ]
];

// 查找键值为'k'的元素
$searchValue = 'k';
$filteredArray = array_filter($multidimensionalArray, function ($value, $key) use ($searchValue) {
    return is_array($value) ? in_array($searchValue, $value) : $value == $searchValue;
});

print_r($filteredArray);

The above code will output the following results:

Array
(
    [f] => Array
        (
            [g] => Array
                (
                    [j] => k
                )

        )

)

In In the above code, we use the is_array() function to determine whether the current value is also an array. If so, we use the in_array() function to determine whether the current array contains the key value that needs to be searched. If not, use == for comparison directly.

Summary

In this article, we introduced the method of finding specified elements in multi-dimensional arrays in PHP, and provided some code samples to help readers better understand and apply related knowledge. . In actual development, if we need to find a list of elements in a multi-dimensional array that meet specific conditions, we can use the PHP built-in function array_filter() to filter; if we need to find a specified element, we can use array_search() or a custom function to traverse the search. . The flexible use of these methods can help us develop various complex PHP applications more efficiently.

The above is the detailed content of Is it possible to find a specified value in a php multidimensional array?. 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