실제 개발에서 PHP는 프로세스 어레이에 많은 편의 기능을 제공하며 Array_Column 함수는 그 중 하나입니다. Array_Column은 2 차원 배열에서 열을 추출하고 해당 열의 값이 포함 된 새 배열을 반환하는 데 도움이 될 수 있습니다. array_column 함수는 Elasticsearch 쿼리 필드 어레이를 구축 할 때 매우 유용합니다.
이 기사에서는 array_column을 사용하여 Elasticsearch 쿼리 필드 어레이를 구축하는 방법, 특히 원래 데이터에서 특정 필드를 추출하여 Elasticsearch 쿼리를 추가로 구성 할 수있는 방법을 소개합니다.
Array_Column 은 PHP의 내장 기능으로 지정된 열의 모든 값을 2 차원 배열에서 추출하고 이러한 값을 새로운 1 차원 배열로 반환합니다. 이 기능의 기본 구문은 다음과 같습니다.
array_column(array $array, $column_key, $index_key = null): array
$ 배열 : 입력 다차원 배열.
$ column_key : 추출 해야하는 열의 키 이름입니다.
$ index_key : 결과 배열을 인덱싱하는 데 사용되는 열을 지정하는 옵션 매개 변수 (제공되지 않은 경우 결과 배열은 자동으로 숫자 인덱스를 사용합니다).
문서 데이터가 포함 된 2 차원 배열이 있다고 가정 해 봅시다. 각 문서에는 ID , 이름 , 카테고리 등과 같은 여러 필드가 포함되어 있다고 가정 해 봅시다.
원래 데이터가 다음과 같습니다.
$documents = [
['id' => 1, 'name' => 'Apple', 'category' => 'Fruit', 'url' => 'http://example.com/apple'],
['id' => 2, 'name' => 'Carrot', 'category' => 'Vegetable', 'url' => 'http://example.com/carrot'],
['id' => 3, 'name' => 'Banana', 'category' => 'Fruit', 'url' => 'http://example.com/banana'],
['id' => 4, 'name' => 'Spinach', 'category' => 'Vegetable', 'url' => 'http://example.com/spinach']
];
Array_Column 함수를 사용하여 모든 카테고리 필드를 추출하고 Elasticsearch 쿼리에서 쉽게 사용할 수있는 배열을 구축 할 수 있습니다.
$categories = array_column($documents, 'category');
print_r($categories);
출력 결과 :
Array
(
[0] => Fruit
[1] => Vegetable
[2] => Fruit
[3] => Vegetable
)
과일 카테고리에 속하는 문서를 찾으려면 범주 필드를 기반으로 Elasticsearch 쿼리를 구축해야한다고 가정하십시오. 당신은 이것을 할 수 있습니다 :
$searchTerm = 'Fruit';
$query = [
'query' => [
'terms' => [
'category' => array_column(
array_filter($documents, function($doc) use ($searchTerm) {
return $doc['category'] === $searchTerm;
}),
'id'
)
]
]
];
// 쿼리 콘텐츠를 인쇄하십시오
print_r($query);
카테고리 필드 과일 로 문서를 쿼리하려고한다고 가정하면 Array_Filter는 먼저 카테고리 과일 로 모든 문서를 필터링 한 다음 Array_Column을 사용하여 ID 필드를 추출하고 최종적으로 ElasticSearch 쿼리 배열을 작성합니다.
출력 쿼리 어레이는 다음과 같습니다.
Array
(
[query] => Array
(
[terms] => Array
(
[category] => Array
(
[0] => 1
[1] => 3
)
)
)
)
<?php
$documents = [
['id' => 1, 'name' => 'Apple', 'category' => 'Fruit', 'url' => 'http://example.com/apple'],
['id' => 2, 'name' => 'Carrot', 'category' => 'Vegetable', 'url' => 'http://example.com/carrot'],
['id' => 3, 'name' => 'Banana', 'category' => 'Fruit', 'url' => 'http://example.com/banana'],
['id' => 4, 'name' => 'Spinach', 'category' => 'Vegetable', 'url' => 'http://example.com/spinach']
];
// 사용 array_column 모두 추출하십시오 category 전지
$categories = array_column($documents, 'category');
print_r($categories);
// 짓다 Elasticsearch 查询전지数组
$searchTerm = 'Fruit';
$query = [
'query' => [
'terms' => [
'category' => array_column(
array_filter($documents, function($doc) use ($searchTerm) {
return $doc['category'] === $searchTerm;
}),
'id'
)
]
]
];
// 쿼리 콘텐츠를 인쇄하십시오
print_r($query);
?>
Array_Column 함수는 다차원 배열에서 데이터를 추출하는 데 매우 적합합니다. 특히 Elasticsearch 쿼리를 구축 할 때 필요한 필드를 효율적으로 추출하여 올바른 쿼리 형식을 구성 할 수 있습니다.
데이터 소스에 많은 양의 문서가 포함 된 경우 array_column 함수를 사용하면 코드의 단순성과 가독성을 크게 향상시킬 수 있으며 배열을 수동으로 통과하는 번거 로움을 효과적으로 피할 수 있습니다.
다른 배열 작동 함수 (예 : Array_Filter )와 Array_Column을 결합함으로써 ElasticSearch를위한 복잡한 쿼리 필드 어레이를 통해 다양한 쿼리 요구를 충족 할 수 있습니다.
이 기사가 도움이되기를 바랍니다! PHP 배열 작동 기술에 대해 질문이 있거나 더 알고 싶다면 언제든지 질문하십시오!