array_search()
함수
array_search()
함수는
배열에서 값을 검색하는 함수입니다.
검색에 성공한 경우 첫 번째 일치하는 키(인덱스)를 반환하고, 그렇지 않으면 false
를 반환합니다.
// 일반 배열에서 array_search() 함수
$arr = ['a', 'b', 'c'];
$key = array_search('c', $arr);
var_dump($key); // 출력: int(2)
$notFound = array_search('d', $arr);
var_dump($notFound); // 출력: bool(false)
// 연관 배열에서 array_search() 함수
$fruits = [
'apple' => 'red',
'banana' => 'yellow',
'cherry' => 'red'
];
$colorToFind = array_search('red', $fruits);
var_dump($colorToFind); // 출력: string(5) 'apple'
array_search()
함수의 형식은 다음과 같습니다.
구문
array_search(mixed $needle, array $haystack, bool $strict = false): int|string|false
매개변수
$needle |
검색할 값입니다.
문자열인 경우 검색할 값의 비교는 대소문자를 구분하여 수행됩니다. |
---|---|
$haystack |
검색할 배열입니다. |
$strict |
옵션. $needle 변수의 값이 자료형까지 일치할지 여부(true , false )를 지정합니다.
만약에 $strict 변수를
|
반환 값
검색에 성공한 경우 첫 번째 일치하는 키(인덱스)를 반환하고, 그렇지 않으면 false
를 반환합니다.
array_search()
함수는 검색에 성공한 경우 첫 번째 일치하는 키(인덱스)를 반환합니다.
$fruits = [
'apple' => 'red',
'banana' => 'yellow',
'cherry' => 'red'
];
// $fruits 배열에서 'red' 값을 검색하여 첫 번째 일치하는 키(인덱스)를 반환합니다.
$colorToFind = array_search('red', $fruits);
// $fruits 배열에서 'red' 값을 가지는 키(인덱스)는 두 개가 있습니다. 'apple'과 'cherry'입니다.
// $colorToFind에는 'red'를 가진 첫 번째 항목의 키(인덱스)가 할당됩니다.
// 따라서 $colorToFind는 'apple'이 됩니다.
var_dump($colorToFind); // 출력: string(5) 'apple'
반환 값 비교에 대한 주의할 점
array_search()
함수를 사용할 때 엄격한 동등 비교(===
) 연산자를 통해 반환값을 확인하세요.
다음의 예제는 엄격하지 않은 동등 비교(==
) 연산를 사용할 경우와 엄격한 동등 비교(===
) 연산자를 사용한 평가 결과에 대한 차이점을 보여주는 예제입니다.
$numbers = [0, "0", false, null];
$searchValue = 0;
$result = array_search($searchValue, $numbers, true);
if ($result == false) {
echo "찾는 값 $searchValue 가 배열 내에서 발견되지 않았습니다.";
} else {
echo "찾는 값 $searchValue 의 위치는 인덱스 $result 입니다.";
}
// 잘못된 결과 발생!!!
// 출력: '찾는 값 0 가 배열 내에서 발견되지 않았습니다.'
if ($result === false) {
echo "찾는 값 $searchValue 가 배열 내에서 발견되지 않았습니다.";
} else {
echo "찾는 값 $searchValue 의 위치는 인덱스 $result 입니다.";
}
// 출력: '찾는 값 0 의 위치는 인덱스 0 입니다.'
이 예제는 array_search()
함수를 사용하여 배열에서 값을 검색하고 검색 결과를 확인하는 예제입니다. 주의해야 할 점은 두 가지 비교 방법의 차이입니다.
- 첫 번째
if
문에서는 엄격하지 않은 동등 비교(==
) 연산자를 사용하여 결과를 확인하며,false
와0
이 같은 것처럼 처리됩니다. 따라서 "찾는 값 $searchValue 가 배열 내에서 발견되지 않았습니다." 메시지가 출력됩니다. 잘못된 결과가 발생합니다. - 두 번째
if
문에서는 엄격한 동등 비교(===
) 연산자를 사용하여 결과를 확인하며, 데이터 형식과 값이 동일해야 합니다. 따라서 "찾는 값 $searchValue 가 배열 내에서 발견되지 않았습니다." 메시지가 출력되지 않습니다.
결론적으로, 엄격한 동등 비교(===
) 연산자를 사용하면 반환값을 정확하게 평가할 수 있으며 코드의 안정성을 높일 수 있습니다.
다양한 활용 사례
array_search()
함수는 주로 다음과 같은 예제의 목적으로 사용됩니다.
존재하는 값 검색
$numbers = [1, 2, 3, 4, 2, 5, 6];
$searchValue = 2;
if (array_search($searchValue, $numbers) !== false) {
echo '찾는 값이 존재합니다.';
} else {
echo '찾는 값이 존재하지 않습니다.';
}
// 출력: '찾는 값이 존재합니다.'
위의 코드는 배열 $numbers
에서 $searchValue
값 (여기서는 2)을 찾아서 그 값이 존재하는지 확인하는 예제입니다. array_search()
함수는 주어진 값이 배열에서 찾아진다면 해당 값을 첫 번째 위치의 키(인덱스)를 반환하고, 그렇지 않으면 false
를 반환합니다. 이 코드는 '찾는 값이 존재합니다.'라는 메시지를 출력하게 됩니다.
검색한 값 삭제 또는 변경
$products = [
'apple' => 1.99,
'banana' => 0.99,
'cherry' => 2.49
];
$targetPrice = 1.00; // 찾으려는 가격
$key = array_search($targetPrice, $products);
if ($key != false) {
unset($products[$key]); // 찾은 값을 삭제
// 또는 값을 변경: $products[$key] = 새로운 가격;
} else {
echo '찾을 수 없는 제품 또는 가격입니다.';
}
// 출력: '찾을 수 없는 제품 또는 가격입니다.'
이 예제에서는 $targetPrice
값 (여기서는 1.00)을 찾아서 배열에서 제거하거나 값을 변경합니다. array_search()
함수는 해당 제품이 있는지 확인하며, 제품이 발견되면 삭제 또는 변경 작업을 수행합니다.
2차원 배열 검색
$students = [
['name' => 'Alice', 'age' => 20],
['name' => 'Bob', 'age' => 22],
['name' => 'Charlie', 'age' => 21]
];
$searchName = 'Bob';
foreach ($students as $key => $student) {
if (array_search($searchName, $student) !== false) {
echo "이름이 $searchName 인 학생을 찾았습니다. 학생 번호: $key";
break;
}
}
// 출력: '이름이 Bob 인 학생을 찾았습니다. 학생 번호: 1'
코드 부연설명
foreach()
반복문은 배열이나 객체를 순회해서 반복으로 처리할 때 사용하는 대표적인 구문입니다.
위의 예제에서는 2차원 배열 $students
에 대해 학생 이름을 검색하여 해당 학생의 정보를 출력합니다. array_search()
함수는 각 학생 배열 내에서 이름을 찾고, 해당 학생의 인덱스(학생 번호)를 반환합니다. 검색이 성공하면 루프를 종료하고 해당 학생의 정보를 출력합니다. 이것은 학생 관리와 데이터 검색과 같은 상황에서 유용하게 활용할 수 있는 예제입니다.
특정 값을 배열에서 찾아 그 위치를 확인
$numbers = [3, 5, 2, 8, 10, 6];
$searchValue = 8;
$key = array_search($searchValue, $numbers);
if ($key !== false) {
echo "찾는 값 $searchValue 의 위치는 인덱스 $key 입니다.";
} else {
echo "찾는 값 $searchValue 가 배열 내에 존재하지 않습니다.";
}
// 출력: '찾는 값 8 의 위치는 인덱스 3 입니다.'
같이 보기
- PHP array_map() 함수 – 개념 정리 및 사용 예제
- PHP foreach() 반복문 사용법 및 활용 예제
- PHP array_filter() 함수 – 개념 정리 및 사용 예제
- PHP 배열 값이 있는지 확인하는 in_array() 함수
- PHP 배열 키가 있는지 확인하는 array_key_exists() 함수
- PHP array_keys() 함수 – 배열 키 목록 가져오기
- PHP array_values() 함수 – 배열 값 목록 가져오기
- PHP array_slice() 함수 - 개념 정리 및 사용 예제
- PHP array_diff() 함수 - 다른 배열에 없는 값 찾기
- PHP array_diff_assoc() 함수 - 키를 기준으로 다른 배열에 없는 값 찾기
- PHP array_intersect() 함수 - 다른 배열과의 공통 값 찾기
- PHP array_intersect_assoc() 함수 - 키와 값을 기준으로 다른 배열과의 공통 요소 찾기
- 자바스크립트 find() 함수 – 개념 정리 및 사용 예제