PHP – array_map và vòng lặp foreach

Vòng lặp là một trong những khái niệm cơ bản nhất được học bởi một nhà phát triển PHP mới bắt đầu. Việc thực hiện một vòng lặp là rất dễ dàng và mọi nhà phát triển được sử dụng để viết một vòng lặp. Tuy nhiên, một vài nhà phát triển có kinh nghiệm có thể triển khai logic tương tự bằng cách sử dụng hàm sẵn có như array_map trong PHP.

Bài viết này không phải là về việc giải thích hàm Array_map sử dụng. Nó tập trung vào việc phân tích sự khác biệt hiệu năng giữa việc sử dụng hàm Array_map sẵn có hoặc thực hiện một vòng lặp foreach trong PHP.

Vòng lặp foreach

Kịch bản sau đây in thời gian thực hiện để chạy tập lệnh tính bằng mili giây. Nó sử dụng vòng lặp foreach để tính bình phương các số nguyên từ 1 đến 1000000.

<?php 

$startTimeLoop = microtime(true);
$testNum = range(1, 1000000);
$newArr = array();
foreach ($testNum as $key => $value) {
    $newArr[] = $value * $value;
}
$endTimeLoop = microtime(true);
echo '<br/>Thời gian được thực hiện bởi vòng lặp: ' . ($endTimeLoop - $startTimeLoop);

Thời gian được thực hiện bởi vòng lặp: 0.12428307533264

Hàm array_map

Tương tự, chúng tôi sử dụng tập lệnh sau để tính bình phương các số nguyên từ 1 đến 1000000 bằng hàm array_map.

<?php

function calculateSquares($num) {
    return $num*$num;
 }
$startTime = microtime(true);
$testNum = range(1,1000000);
$newArr = array_map('calculateSquares', $testNum);
$endTime = microtime(true);
echo 'Thời gian thực hiện bởi array_map: '.($endTime - $startTime);

Thời gian thực hiện bởi array_map: 0.11706495285034

Phân tích

Test thời gian thục thi của array_map và vòng lặp foreach

Chúng tôi đã chạy cả hai kịch bản 5 lần và ghi nhận thời gian của cả hai. Do đó, chúng tôi vẽ đồ thị sau so sánh thời gian của cả hai tập lệnh. Có thể thấy từ biểu đồ trên, cả hai việc thực hiện đều mất khoảng thời gian như nhau. Tuy nhiên, Array_map trông tốt hơn trong mã vì nó làm giảm số lượng các vòng lặp hiển thị.

Kết luận

Để kết luận, chúng tôi đã phân tích hiệu suất của mảng array_map với vòng lặp foreach. Ngoài ra, bạn có thể đọc thêm về các hàm khác PHP trên https://php.net/.

You may also like...

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *