>  기사  >  백엔드 개발  >  PHP 다차원 배열에서 지정된 값을 찾을 수 있습니까?

PHP 다차원 배열에서 지정된 값을 찾을 수 있습니까?

PHPz
PHPz원래의
2023-04-24 15:51:06702검색

PHP에서 배열은 매우 일반적인 데이터 구조이고 다차원 배열은 특별한 형태의 배열입니다. 다차원 배열은 배열로 간주될 수 있으며 각 요소는 배열을 저장합니다. 실제 개발에서는 다차원 배열에서 지정된 요소를 찾아야 하는 경우가 있습니다. 이 목적을 달성하기 위해 PHP는 몇 가지 내장 함수와 연산자를 제공합니다.

이 글에서는 PHP의 다차원 배열에서 지정된 요소를 찾는 방법을 소개하고, 독자가 관련 지식을 더 잘 이해하고 적용할 수 있도록 몇 가지 코드 샘플을 제공합니다.

1. 지정된 값을 찾으려면 array_search 함수를 사용하세요.

PHP는 배열을 수동으로 탐색할 필요 없이 배열에서 지정된 값을 찾는 데 사용할 수 있는 내장 함수 array_search()를 제공합니다. 이 함수는 "완화 비교" 방법을 사용하여 검색합니다. 즉, 합동 기호 ===를 사용하는 대신 ==를 사용하여 비교합니다. 다음은 다차원 배열에서 지정된 값을 찾는 샘플 코드입니다.

/**
 * 查找多维数组中指定值
 *
 * @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

위의 샘플 코드에서는 다차원 배열에서 지정된 값을 찾기 위해 searchValueInMultiDimensionalArray()라는 사용자 정의 함수를 정의했습니다. 이 함수는 재귀적인 방법을 사용하여 순회하며, 각 순회 중에 array_search() 함수를 사용하여 현재 배열 요소에 찾으려는 값이 포함되어 있는지 확인합니다.

2. 지정된 키 이름이나 키 값을 찾으려면 array_filter 함수를 사용하세요.

특정 요소를 찾는 것 외에도 때로는 지정된 조건을 충족하는 다차원 배열의 요소 목록을 찾아야 할 때도 있습니다. PHP는 특정 조건에 맞는 요소를 필터링하는 데 사용할 수 있는 내장 함수 array_filter()를 제공하며, 검색할 키 이름이나 키 값을 지정할 수도 있습니다.

다음은 다차원 배열에서 지정된 키 이름을 찾는 샘플 코드입니다.

// 示例数组
$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);

위 코드는 다음과 같은 결과를 출력합니다.

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

)

위 코드에서는 array_filter() 함수를 사용하고 $ 콜백 함수의 키 매개변수는 현재 배열 요소의 키 이름을 나타내고 이 키 이름을 사용하여 우리가 지정한 검색 키 이름($searchKey)과 비교합니다.

또한 $ureKey 매개변수를 사용하여 지정된 키 값을 찾을 수도 있습니다. 샘플 코드는 다음과 같습니다.

// 示例数组
$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);

위 코드는 다음 결과를 출력합니다.

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

        )

)

위 코드에서 우리는 is_array() 함수를 사용하여 현재 값도 배열인지 확인합니다. 그렇다면 in_array() 함수를 사용하여 현재 배열에 검색해야 하는 키 값이 포함되어 있는지 확인합니다. 그렇지 않은 경우 ==를 사용하여 직접 비교하세요.

요약

이 글에서는 PHP의 다차원 배열에서 특정 요소를 찾는 방법을 소개하고, 독자들이 관련 지식을 더 잘 이해하고 적용할 수 있도록 몇 가지 코드 샘플을 제공했습니다. 실제 개발에서 특정 조건을 충족하는 다차원 배열의 요소 목록을 찾아야 하는 경우 PHP 내장 함수 array_filter()를 사용하여 지정된 요소를 찾을 수 있습니다. array_search() 또는 사용자 정의 함수를 사용하여 검색을 탐색하세요. 이러한 방법을 유연하게 사용하면 다양하고 복잡한 PHP 애플리케이션을 보다 효율적으로 개발하는 데 도움이 될 수 있습니다.

위 내용은 PHP 다차원 배열에서 지정된 값을 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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