>백엔드 개발 >PHP 문제 >여러 요소가 배열에 있는지 확인 php

여러 요소가 배열에 있는지 확인 php

WBOY
WBOY원래의
2023-05-11 10:23:06790검색

PHP에서는 여러 요소가 배열에 있는지 확인하는 것이 매우 일반적입니다. 이 기사에서는 이 기능을 구현하는 방법을 소개합니다.

방법 1: in_array 함수 사용

in_array 함수는 요소가 배열에 있는지 여부를 확인할 수 있습니다. 해당 구문은 다음과 같습니다.

bool in_array ( 혼합 $needle , 배열 $haystack [, bool $strict = FALSE ] )

예 이 함수에는 세 개의 매개변수가 있음을 알 수 있습니다. 첫 번째 매개변수는 대상 요소를 나타내고, 두 번째 매개변수는 검색할 배열을 나타내며, 세 번째 매개변수는 엄격 모드 활성화 여부를 나타냅니다. 기본적으로 엄격 모드는 활성화되어 있지 않습니다.

따라서 in_array 함수를 사용하면 루프를 통해 배열에 여러 요소가 있는지 확인할 수 있습니다. 샘플 코드는 다음과 같습니다.

<?php
$needleArr = ['element1', 'element2', 'element3'];
$haystackArr = ['element1', 'element3', 'element4', 'element5'];

foreach ($needleArr as $needle) {
    if (in_array($needle, $haystackArr)) {
        echo "$needle is in haystack array 
";
    } else {
        echo "$needle is NOT in haystack array 
";
    }
}

출력 결과는 다음과 같습니다.

element1 is in haystack array
element2 is NOT in haystack array
element3 is in haystack array

위 코드에서는 먼저 대상 배열 $needleArr과 검색할 배열 $haystackArr, 그리고 <code>foreach 루프를 통해 $needleArr의 각 요소가 $haystackArr에 존재하는지 순차적으로 판단하고, 판단 결과 드디어 출력됩니다. $needleArr 和一个待搜索的数组 $haystackArr,然后通过 foreach 循环依次判断 $needleArr 中的每个元素是否在 $haystackArr 中存在,最终输出判断结果。

需要注意的是,in_array 函数默认不启用严格模式,即将元素转换为字符串来进行比较。如果需要启用严格模式,可将第三个参数设为 true,如下所示:

in_array($needle, $haystackArr, true);

方法二:使用 array_intersect 函数

array_intersect 函数可比较多个数组,找出它们共同的元素,具体语法如下:

array array_intersect ( array $array1 , array $array2 [, array $... ] )

该函数可比较多个数组,其中第一个参数表示第一个数组,第二个参数表示第二个数组,依次类推。

因此,我们也可以利用 array_intersect 函数,将多个数组传入其中,找出它们的交集,如果交集不为空,则说明数组中存在指定元素。示例代码如下:

<?php
$needleArr = ['element1', 'element2', 'element3'];
$haystackArr = ['element1', 'element3', 'element4', 'element5'];

$intersectArr = array_intersect($needleArr, $haystackArr);
if (!empty($intersectArr)) {
    echo "There are some elements in the haystack array 
";
} else {
    echo "No elements in the haystack array 
";
}

输出结果为:

There are some elements in the haystack array

上述代码中,我们先定义了一个目标数组 $needleArr 和一个待搜索的数组 $haystackArr,然后将它们传入 array_intersect 函数中,如果返回的交集不为空,则说明数组中存在指定元素。

需要注意的是,array_intersect 函数会保留原始数组中的键,因此它返回的数组不一定是连续的,具体取决于原始数组的键是否连续。如果需要保留键值关系,可使用 array_intersect_assoc 函数。

方法三:使用 array_diff 函数

array_diff 函数可比较多个数组,找出它们的差集,具体语法如下:

array array_diff ( array $array1 , array $array2 [, array $... ] )

该函数可比较多个数组,其中第一个参数表示第一个数组,第二个参数表示第二个数组,依次类推。

因此,我们也可以利用 array_diff 函数,将多个数组传入其中,找出它们的差集,如果差集等于原始数组,则说明数组中存在指定元素。示例代码如下:

<?php
$needleArr = ['element1', 'element2', 'element3'];
$haystackArr = ['element1', 'element3', 'element4', 'element5'];

$diffArr = array_diff($needleArr, $haystackArr);
if ($diffArr !== $needleArr) {
    echo "There are some elements in the haystack array 
";
} else {
    echo "No elements in the haystack array 
";
}

输出结果为:

There are some elements in the haystack array

上述代码中,我们先定义了一个目标数组 $needleArr 和一个待搜索的数组 $haystackArr

in_array 함수는 기본적으로 엄격 모드를 활성화하지 않습니다. 즉, 비교를 위해 요소를 문자열로 변환합니다. 엄격 모드를 활성화해야 하는 경우 아래와 같이 세 번째 매개변수를 true로 설정할 수 있습니다.

rrreee

방법 2: array_intersect 함수 사용 🎜🎜 array_intersect 함수는 여러 배열을 비교하고 공통 요소를 찾을 수 있습니다. 🎜🎜array array_intersect ( array $array1 , array $array2 [, array $... ] )🎜🎜이 함수는 여러 배열을 비교할 수 있습니다. 여기서 첫 번째 매개변수는 첫 번째 배열을 나타내고 두 번째 매개변수는 두 번째 배열을 나타냅니다. 등등. 🎜🎜따라서 array_intersect 함수를 사용하여 여러 배열을 전달하고 교차점을 찾을 수도 있습니다. 교차점이 비어 있지 않으면 지정된 요소가 배열에 존재한다는 의미입니다. 샘플 코드는 다음과 같습니다. 🎜rrreee🎜출력 결과는 다음과 같습니다. 🎜rrreee🎜위 코드에서는 먼저 대상 배열 $needleArr과 검색할 배열 $haystackArr, 그런 다음 이를 array_intersect 함수에 전달합니다. 반환된 교차점이 비어 있지 않으면 지정된 요소가 배열에 존재한다는 의미입니다. 🎜🎜array_intersect 함수는 원래 배열의 키를 유지하므로 원래 배열의 키가 연속적인지 여부에 따라 반환되는 배열이 반드시 연속적인 것은 아닙니다. 키-값 관계를 유지해야 하는 경우 array_intersect_assoc 함수를 사용할 수 있습니다. 🎜🎜방법 3: array_diff 함수 사용 🎜🎜array_diff 함수는 여러 배열을 비교하고 차이점을 찾을 수 있습니다. 구체적인 구문은 다음과 같습니다. 🎜🎜array array_diff ( array $array1 , array $array2 [, array $... ] ) 🎜 🎜이 함수는 여러 배열을 비교할 수 있습니다. 여기서 첫 번째 매개변수는 첫 번째 배열을 나타내고, 두 번째 매개변수는 두 번째 배열을 나타냅니다. 🎜🎜따라서 array_diff 함수를 사용하여 여러 배열을 전달하고 차이점을 찾을 수도 있습니다. 차이가 원래 배열과 같으면 지정된 요소가 배열에 존재한다는 의미입니다. 샘플 코드는 다음과 같습니다. 🎜rrreee🎜출력 결과는 다음과 같습니다. 🎜rrreee🎜위 코드에서는 먼저 대상 배열 <code>$needleArr과 검색할 배열 $haystackArr, 그런 다음 이를 array_diff 함수에 전달합니다. 반환된 차이 세트가 원래 배열과 같지 않으면 지정된 요소가 배열에 존재한다는 의미입니다. 🎜🎜array_diff 함수는 첫 번째 배열에는 존재하지만 다른 배열에는 존재하지 않는 요소의 배열을 반환한다는 점에 유의해야 합니다. 따라서 첫 번째 배열 자체에 대상 요소가 포함되어 있지 않으면 위 방법은 효과가 없습니다. 🎜

위 내용은 여러 요소가 배열에 있는지 확인 php의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.