현재 위치: > 최신 기사 목록> Array_Column 및 루프 추출 성능의 비교

Array_Column 및 루프 추출 성능의 비교

M66 2025-05-11

PHP에서는 종종 다차원 배열에서 특정 필드의 값을 추출해야합니다. 이 기능을 달성하기 위해 일반적으로 Array_Column 함수를 사용하거나 전통적인 foreach 루프를 사용하여 수동으로 추출합니다. 이 두 가지 방법에는 고유 한 장점과 단점이 있습니다. 이 기사는 성능 관점 에서이 두 가지 방법을 비교하여보다 효율적인 솔루션을 선택하는 데 도움이됩니다.

1. array_column 함수 소개

Array_Column 은 PHP의 내장 기능으로 다차원 배열에서 열에서 데이터를 추출합니다. 구문은 다음과 같습니다.

 array_column(array $array, mixed $column_key, mixed $index_key = null): array
  • $ 배열 : 입력 다차원 배열.

  • $ column_key : 추출 할 열을 지정합니다.

  • $ index_key : 옵션, 결과 배열에서 인덱스를 지정합니다.

샘플 코드 :

 $data = [
    ['id' => 1, 'name' => 'Alice', 'age' => 30],
    ['id' => 2, 'name' => 'Bob', 'age' => 25],
    ['id' => 3, 'name' => 'Charlie', 'age' => 35],
];

$names = array_column($data, 'name');
print_r($names);

산출:

 Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

2. 컬럼 값을 추출하기위한 리치 루프

전통적인 방법은 Foreach 루프를 통해 배열에서 열을 수동으로 추출하는 것입니다. 이는 더 많은 코드 볼륨이 필요하지만이 방법은 더 유연하고 복잡한 작업이 필요한 일부 시나리오에 적합합니다.

샘플 코드 :

 $data = [
    ['id' => 1, 'name' => 'Alice', 'age' => 30],
    ['id' => 2, 'name' => 'Bob', 'age' => 25],
    ['id' => 3, 'name' => 'Charlie', 'age' => 35],
];

$names = [];
foreach ($data as $item) {
    $names[] = $item['name'];
}
print_r($names);

산출:

 Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

3. 성능 비교

성능의 관점에서, Array_Column은 일반적으로 Foreach 루프보다 더 효율적입니다. array_column은 PHP에 의해 내부적으로 구현되었으며 최적화되었으며, Foreach 루프는 요소에 의해 요소를 처리해야합니다.

구체적으로 두 가지의 성능 차이를 이해하기 위해 간단한 벤치 마크와 비교할 수 있습니다.

 // 테스트 데이터
$data = [];
for ($i = 0; $i < 1000000; $i++) {
    $data[] = ['id' => $i, 'name' => 'Name ' . $i, 'age' => rand(18, 60)];
}

// 사용 array_column 발췌
$start = microtime(true);
$names = array_column($data, 'name');
$end = microtime(true);
echo "array_column 발췌时间: " . ($end - $start) . " 두번째\n";

// 사용 foreach 발췌
$start = microtime(true);
$names = [];
foreach ($data as $item) {
    $names[] = $item['name'];
}
$end = microtime(true);
echo "foreach 발췌时间: " . ($end - $start) . " 두번째\n";

위의 코드를 통해 두 코드의 성능 차이를 비교할 수 있습니다. 일반적으로 Array_Column 의 실행 시간은 특히 다량의 데이터를 처리 할 때 Foreach 루프의 실행 시간보다 상당히 짧습니다.

4. 해당 시나리오

  • Array_Column : 특정 열에서 데이터를 추출하면 Array_Column 이보다 효율적이고 간결한 선택입니다.

  • Foreach : Foreach는 열 값을 추출하는 과정에서 추가 작업 또는 복잡한 처리를 수행해야 할 때 더 유연합니다.

5. URL 도메인 이름 교체 예제

코드가 특정 URL의 도메인 이름을 교체해야한다고 가정하십시오. URL의 도메인 이름을 m66.net 으로 바꾸는 방법의 예는 다음과 같습니다.

 $url = "https://www.example.com/path/to/resource?query=1";

// 도메인 이름을 대체하십시오 m66.net
$new_url = preg_replace('/https?:\/\/[a-zA-Z0-9.-]+/', 'https://m66.net', $url);

echo $new_url;

산출: