Hàm array_rand() trong PHP

Hàm array_rand() trong PHP
Hàm array_rand() trong PHP

Chức năng của Hàm array_rand() trong PHP

Hàm array_rand() trong PHP dùng để lấy ngẫu nhiên khóa (key) của một số lượng phần tử có trong mảng gốc để làm cột giá trị cho mảng mới, hàm cho phép bạn quy định số lượng phần tử cần lấy ngẫu nhiên, thông qua cột giá trị của mảng mới bạn có thể lấy giá trị của phần tử đã được lấy ngẫu nhiên trong mảng gốc, hàm này không làm thay đổi mảng gốc.

Cú pháp của Hàm array_rand() trong PHP

$mảng_mới = array_rand($biến_mảng_gốc,số_phần_tử_cần_lấy);

$biến_mảng_gốc: Biến của mảng gốc.

số_phần_tử_cần_lấy: Số phần tử cần lấy ngẫu nhiên trong tất cả phần tử có trong mảng gốc.

$mảng_mới: Kết quả trả về mảng mới, cột khóa (key) của mảng gốc làm cột giá trị cho mảng mới, và không làm thay đổi mảng gốc.

Ví dụ Hàm array_rand() trong PHP

<h2>Hàm array_rand() mảng bình thường</h2>
<?php
$manggoc = array("Lực","Vân","Quỳnh","Dung","Hạ");

// Lấy ngẫu nhiên 3 phần tử trong mảng, rồi lấy khóa (key) 3 phần tử đó cho vào cột giá trị của mảng mới
$mangrand = array_rand($manggoc,3);

// Xem mảng mới
print_r($mangrand); // Kết quả ngẫu nhiên: Array ( [0] => 0 [1] => 1 [2] => 4 )
echo "<br>";

// Thông qua giá trị của mảng mới để lấy giá trị của những phần tử trong mảng gốc có trong kết quả lấy ngẫu nhiên
echo $manggoc[$mangrand[0]]."<br>"; // Kết quả ngẫu nhiên: Lực
echo $manggoc[$mangrand[1]]."<br>"; // Kết quả ngẫu nhiên: Vân
echo $manggoc[$mangrand[2]]."<br>"; // Kết quả ngẫu nhiên: Hạ
?>

<h2>Hàm array_rand() mảng liên kết</h2>
<?php
$manglkgoc = array("Lực"=>35,"Vân"=>29,"Quỳnh"=>2,"Dung"=>30,"Hạ"=>1);

// Lấy ngẫu nhiên 3 phần tử trong mảng, rồi lấy khóa (key) 3 phần tử đó cho vào cột giá trị của mảng mới
$mangrand = array_rand($manglkgoc,3);

// Xem mảng mới
print_r($mangrand); // Kết quả ngẫu nhiên: Array ( [0] => Lực [1] => Dung [2] => Hạ )
echo "<br>";

// Thông qua giá trị của mảng mới để lấy giá trị của những phần tử trong mảng gốc có trong kết quả lấy ngẫu nhiên
echo $manglkgoc[$mangrand[0]]."<br>"; // Kết quả ngẫu nhiên: 35
echo $manglkgoc[$mangrand[1]]."<br>"; // Kết quả ngẫu nhiên: 30
echo $manglkgoc[$mangrand[2]]."<br>"; // Kết quả ngẫu nhiên: 1
?>

Kết quả ngẫu nhiên:

/////Hàm array_rand() mảng bình thường
Array ( [0] => 0 [1] => 1 [2] => 4 )
Lực
Vân
Hạ

/////Hàm array_rand() mảng liên kết
Array ( [0] => Lực [1] => Dung [2] => Hạ )
35
30
1

Chạy Thử

Kinh nghiệm sử dụng array_rand() trong PHP hiệu quả

array_rand() phù hợp khi cần chọn ngẫu nhiên một hoặc nhiều khóa từ mảng. Tuy nhiên, để kết quả đúng với mục đích xử lý, nên kiểm tra dữ liệu đầu vào và xác định rõ số lượng phần tử cần lấy trước khi sử dụng.

Xử lý kết quả khi array_rand() trả về nhiều phần tử

Khi chỉ lấy một phần tử, array_rand() trả về trực tiếp một khóa. Ngược lại, nếu yêu cầu nhiều phần tử, kết quả là một mảng chứa các khóa được chọn. Vì vậy, cách xử lý cần thay đổi tùy theo giá trị của tham số số lượng.

<?php
$products = [
    'phone' => 'Điện thoại',
    'laptop' => 'Laptop',
    'tablet' => 'Máy tính bảng',
    'watch' => 'Đồng hồ'
];

$randomKeys = array_rand($products, 2);

foreach ($randomKeys as $key) {
    echo $products[$key] . '<br>';
}
?>

Trong trường hợp này, biến $randomKeys chứa hai khóa khác nhau được chọn từ mảng. Có thể dùng các khóa này để lấy dữ liệu tương ứng mà không cần tạo thêm một mảng trung gian.

Tránh lỗi khi mảng không có dữ liệu để lấy ngẫu nhiên

Không nên gọi array_rand() một cách trực tiếp khi chưa biết mảng có dữ liệu hay không. Nếu mảng rỗng hoặc số lượng phần tử cần lấy không phù hợp với kích thước mảng, hàm có thể phát sinh lỗi. Kiểm tra empty() và số lượng phần tử trước khi thực hiện sẽ giúp đoạn code an toàn hơn.

<?php
$items = [];

if (!empty($items)) {
    $key = array_rand($items);
    echo $items[$key];
} else {
    echo 'Không có dữ liệu để lựa chọn.';
}
?>

Cách kiểm tra này đặc biệt hữu ích khi dữ liệu đến từ cơ sở dữ liệu, API hoặc nguồn do người dùng cung cấp, vì số lượng phần tử thực tế có thể thay đổi trong quá trình chạy chương trình.

Kết hợp array_rand() với các hàm xử lý mảng khác

array_rand() chỉ trả về khóa nên có thể kết hợp với các hàm xử lý mảng để xây dựng cách chọn dữ liệu linh hoạt hơn. Chẳng hạn, sau khi lấy khóa ngẫu nhiên, có thể dùng array_intersect_key() để tạo một tập dữ liệu mới chỉ chứa những phần tử được chọn.

<?php
$items = [
    101 => 'Sản phẩm A',
    102 => 'Sản phẩm B',
    103 => 'Sản phẩm C',
    104 => 'Sản phẩm D'
];

$keys = array_rand($items, 2);
$selected = array_intersect_key($items, array_flip($keys));

print_r($selected);
?>

Cách kết hợp này phù hợp khi cần giữ nguyên cả khóa và giá trị của những phần tử được chọn. Khi xây dựng chức năng lấy sản phẩm, bài viết hoặc nội dung ngẫu nhiên, nên chọn cách xử lý dựa trên cấu trúc dữ liệu thực tế thay vì chỉ lấy giá trị một cách đơn lẻ.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Hàm array_rand() trong PHP.

  • 0 Bình luận
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Hàm array_rand() trong PHP
Email, Điện thoại 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 *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !