>백엔드 개발 >PHP 튜토리얼 >PHP에서 순서 배열에 특정 값이 포함되어 있는지 확인하는 방법 알아보기

PHP에서 순서 배열에 특정 값이 포함되어 있는지 확인하는 방법 알아보기

coldplay.xixi
coldplay.xixi앞으로
2020-08-11 16:25:592123검색

PHP에서 순서 배열에 특정 값이 포함되어 있는지 확인하는 방법 알아보기

질문: 정렬된 배열의 경우 주어진 값이 배열에 존재하는지 확인하는 방법입니다.

아이디어: 존재 여부를 확인하려면 가장 간단한 방법은 배열을 직접 반복하여 각 값을 비교하는 것입니다. 그러나 정렬된 배열의 경우 이와 같이 작성하면 "정렬된" 기능을 활용하는 데 완전히 실패합니다.

관련 학습 권장 사항: php 프로그래밍(동영상)

모두 "이진 검색"을 사용합니다.

//有序数组为

$arr = array(2,5,66,87,954,1452,5865);

//查找值

$str = 1452;

//我们先定义 三个参数

$front = 0;//一个开始值下标

$end = count($arr) - 1;//一个结束值下标

$mid = intval(($front + $end) / 2);//中间值下标

1 첫 번째 비교에서는 검색 값 str이 중간 값과 같은지 직접 확인합니다. mid, 같으면 true를 직접 반환합니다.

2 검색 값 str이 중간 값 mid보다 크면 검색 값 str이 중간 값, 즉 시작 값 front에 있을 수 있음을 의미합니다. 재할당 필요 = 중간 값 mid + 1, 끝 값 end는 사용되지 않음 변경, 중간 값 mid는 차례로 새로운 시작 값 + 끝 값

3. 중간 값 mid는 검색 값 str이 중간 값의 왼쪽에 있을 수 있음을 의미합니다. 즉, 시작 값은 변경될 필요가 없으며 끝 값 end는 재할당 = 중간 값 - 1이어야 하며, 중간 값 mid는 시작 값 + 새 끝 값을 차례로

----위와 같이 들어오는 시작 값, 끝 값 및 중간 값을 비교합니다. 시작 값이 종료 값보다 크면 찾을 수 없다는 의미이고, 그렇지 않으면 찾았다고 반환합니다.

구체적인 코드는 다음과 같습니다:

$str = 89;//查找值

$arr = [1,55,66,89,420];//有序数组

$ren = find($arr, $str);

echo &#39;<pre class="brush:php;toolbar:false">&#39;;

var_dump($ren);

function find($arr, $str){

 $front = 0;//开始下标

 $end = count($arr) - 1;//结束下标

 while($front <= $end){//结束值 大于 开始值 ,反之则退出

  $mid = intval(($front + $end) / 2);//中间值下标

  if($str == $arr[$mid]){

   return $mid;//存在直接返回值的下标

  }

  if($str > $arr[$mid]){

   $front = $mid + 1;//在前面

  }

  if($str < $arr[$mid]){

   $end = $mid - 1;//在后面

  }

 }

 return false;

}

반환 결과: 89는 네 번째 요소 값 첨자 3

int(3)

관련 학습 권장 사항: 프로그래밍 비디오

위 내용은 PHP에서 순서 배열에 특정 값이 포함되어 있는지 확인하는 방법 알아보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제