gpt4 book ai didi

php - 如何使用 RedBeanPHP 从表中获取 id 编号顺序有间隙的随机行?

转载 作者:行者123 更新时间:2023-11-29 18:38:28 25 4
gpt4 key购买 nike

我正在尝试使用 RedBean 从表中获取随机行。我试过这个:

$amount = R::count($names);
$id = rand(0, $amount);
$randomname = R::load( $names, $id );
$name = $randomname["name"];

但是很快我发现这种方式不正确,因为表中的id号顺序有间隙,可以有id 1-95,然后115-523,然后530-600等等。有间隙,因为我手动删除了行,因此随机 $id 有时会落在这些间隙上,而不会落在最后一行上,因为 $amount 小于最后一个 id。

据我了解,在尝试在其他人的问题中找到答案后,id 应该保持不变,这意味着我不需要尝试更改 id 本身,这样它们就不会包含间隙。所以我正在尝试做一些东西。

我也尝试过这个,它有效,尽管我认为对单行结果的检查太多了:

$randomnames = R::findAll($names);
$a = 0;
foreach($randomnames as $n){
if($a == $id){
$name = $n['name'];
$a = $amount;
}
else $a++;
}

也许我应该以某种方式使用 MySQL 的 RAND,如果 RedBean 本身不存在任何东西,或者 R::exec 与 SQL...如何获得随机行是最好的?

我刚刚开始学习 RedBean 和 PHP,试图自己找到答案,也在 RedBean 的页面上找到答案,但找不到具体的内容。这也是我的第一个问题,所以我希望我问得正确。 :)

最佳答案

我的两分钱;-)

$ids = R::getCol("select id from $names"); //returns an array of id's indexed as 0..number of names-1
$random_index = rand(0, sizeof($ids)-1);
$random_name = R::load( $names, $ids[$random_index] );
$name = $random_name["name"];

关于php - 如何使用 RedBeanPHP 从表中获取 id 编号顺序有间隙的随机行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45087290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com