Home > Backend Development > PHP Problem > Whether an array contains a certain array php

Whether an array contains a certain array php

王林
Release: 2023-05-07 19:20:35
Original
1017 people have browsed it

In PHP, we can operate arrays in various ways. One useful operation is to check if an array contains another array. This operation can be used in many applications, such as when traversing a multidimensional array to find a specific item, or when making requests and responses using a RESTful API.

The following will introduce two methods in PHP to check whether an array contains another array.

Method 1: Use the in_array() function

The in_array() function can determine whether a value is in an array. Therefore, we can first loop through the array we are looking for, and then use the in_array() function to determine whether the target array contains this array. The following is a sample code:

function checkArrayExists($needle, $haystack) {
    // 遍历 $needle 数组
    foreach ($needle as $value) {
        // 判断 $haystack 是否包含 $value
        if (!in_array($value, $haystack)) {
            return false;
        }
    }
    return true;
}

// 测试代码
$haystack = array('foo', 'bar', 'baz');
$needle1 = array('foo', 'baz');
$needle2 = array('foo', 'qux');

if (checkArrayExists($needle1, $haystack)) {
    echo 'needle1 is in haystack';
} else {
    echo 'needle1 is not in haystack';
}

if (checkArrayExists($needle2, $haystack)) {
    echo 'needle2 is in haystack';
} else {
    echo 'needle2 is not in haystack';
}
Copy after login

The above code defines a function called checkArrayExists(). In this function, we use the in_array() function to determine whether a value is in the target array, and then Return the appropriate results.

Note that the values ​​in the checked array must match exactly, including data type.

Method 2: Use the array_diff() function

In PHP, the array_diff() function can calculate the difference between two arrays, that is, return the value that only appears in one array. If the difference between two arrays is empty, it means that the two arrays match exactly.

Therefore, we can convert both the array to be found and the target array into difference sets, and then determine whether their difference sets are empty. The following is a sample code:

function checkArrayExists($needle, $haystack) {
    $diff = array_diff($needle, $haystack);
    if (count($diff) == 0) {
        return true;
    }
    return false;
}

// 测试代码
$haystack = array('foo', 'bar', 'baz');
$needle1 = array('foo', 'baz');
$needle2 = array('foo', 'qux');

if (checkArrayExists($needle1, $haystack)) {
    echo 'needle1 is in haystack';
} else {
    echo 'needle1 is not in haystack';
}

if (checkArrayExists($needle2, $haystack)) {
    echo 'needle2 is in haystack';
} else {
    echo 'needle2 is not in haystack';
}
Copy after login

The above code defines a function called checkArrayExists(). In this function, we use the array_diff() function to calculate the difference between two arrays and determine Check whether the difference set is empty, and then return the corresponding result.

Which method is better?

Both methods can effectively check whether an array contains another array. However, in terms of performance, method 2 is more efficient using the array_diff() function, especially when dealing with large arrays. Therefore, method two should be used for large arrays. However, if the size of the array is relatively small, method 1 is good enough, and the code is more concise and clear.

To sum up, understanding these two methods can enable us to operate arrays more efficiently and improve programming efficiency.

The above is the detailed content of Whether an array contains a certain array php. 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