当我们在PHP中需要从一个数组中随机抽取指定条记录时,我们可以使用以下步骤:
- 创建一个新的数组来存储我们要抽取的记录:
$selectedItems = array();
- 使用 PHP 函数
array_rand()
从原始数组中随机选择指定数量的下标。
$randomKeys = array_rand($originalArray, $numberOfItemsToSelect);
其中,$originalArray
是我们要从中随机选择记录的原始数组,而 $numberOfItemsToSelect
是我们想要抽取的记录数量。
- 遍历选中的下标,并将对应的值添加到新数组中:
foreach ($randomKeys as $key) {
$selectedItems[] = $originalArray[$key];
}
我们使用了 foreach()
循环,遍历选中的下标 $randomKeys
中的每一个键名,将该键名对应的原始数组中的值添加到 $selectedItems
中。
- 返回新数组
$selectedItems
。
return $selectedItems;
以下是两个示例说明。
示例一
假设我们有一个存储了 10 个元素的数组 $colors
,现在我们想要随机抽取其中 5 个元素。我们可以使用上述方法进行操作:
$colors = array('Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet', 'Brown', 'Gray', 'Black');
$numberOfItemsToSelect = 5;
$selectedColors = array();
$randomKeys = array_rand($colors, $numberOfItemsToSelect);
foreach ($randomKeys as $key) {
$selectedColors[] = $colors[$key];
}
print_r($selectedColors);
以上代码输出结果可能如下:
Array (
[0] => Orange
[1] => Green
[2] => Blue
[3] => Indigo
[4] => Gray
)
示例二
假设我们有一个存储了 20 个用户的数组 $users
,每个用户都有一个 $user_id
字段。现在我们想要随机抽取其中 3 个用户。我们可以使用上述方法进行操作:
$users = array(
array('user_id' => 1, 'username' => 'Alice'),
array('user_id' => 2, 'username' => 'Bob'),
array('user_id' => 3, 'username' => 'Charlie'),
array('user_id' => 4, 'username' => 'David'),
array('user_id' => 5, 'username' => 'Edgar'),
array('user_id' => 6, 'username' => 'Frank'),
array('user_id' => 7, 'username' => 'George'),
array('user_id' => 8, 'username' => 'Henry'),
array('user_id' => 9, 'username' => 'Isabelle'),
array('user_id' => 10, 'username' => 'Jack'),
array('user_id' => 11, 'username' => 'Karen'),
array('user_id' => 12, 'username' => 'Liam'),
array('user_id' => 13, 'username' => 'Mia'),
array('user_id' => 14, 'username' => 'Nadia'),
array('user_id' => 15, 'username' => 'Oliver'),
array('user_id' => 16, 'username' => 'Penny'),
array('user_id' => 17, 'username' => 'Quincy'),
array('user_id' => 18, 'username' => 'Rachel'),
array('user_id' => 19, 'username' => 'Steve'),
array('user_id' => 20, 'username' => 'Tracy'),
);
$numberOfItemsToSelect = 3;
$selectedUsers = array();
$randomKeys = array_rand($users, $numberOfItemsToSelect);
foreach ($randomKeys as $key) {
$selectedUsers[] = $users[$key];
}
print_r($selectedUsers);
以上代码输出结果可能如下:
Array (
[0] => Array
(
[user_id] => 4
[username] => David
)
[1] => Array
(
[user_id] => 14
[username] => Nadia
)
[2] => Array
(
[user_id] => 15
[username] => Oliver
)
)
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php中通过数组进行高效随机抽取指定条记录的算法 - Python技术站