PHP에서는 종종 다차원 배열에서 특정 필드의 값을 추출해야합니다. 이 기능을 달성하기 위해 일반적으로 Array_Column 함수를 사용하거나 전통적인 foreach 루프를 사용하여 수동으로 추출합니다. 이 두 가지 방법에는 고유 한 장점과 단점이 있습니다. 이 기사는 성능 관점 에서이 두 가지 방법을 비교하여보다 효율적인 솔루션을 선택하는 데 도움이됩니다.
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
)
전통적인 방법은 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
)
성능의 관점에서, 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 루프의 실행 시간보다 상당히 짧습니다.
Array_Column : 특정 열에서 데이터를 추출하면 Array_Column 이보다 효율적이고 간결한 선택입니다.
Foreach : Foreach는 열 값을 추출하는 과정에서 추가 작업 또는 복잡한 처리를 수행해야 할 때 더 유연합니다.
코드가 특정 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;
산출: