繁体   English   中英

将PHP转换为数组并循环遍历

[英]Casting PHP into an array and looping through

我正在为我们的空手道学校申请一个应用程序,并希望从数据库中获取技术名称,以随机顺序将它们存储在一个数组中,并且能够单击一个按钮一次一个地移动整个数组。

我已经用几种不同的方式考虑过这个问题,包括从数据库中随机进行这很简单,但它多次采用相同的技术,我只想做一次。

下面的示例代码将它们全部随机地列出,当我刷新浏览器时,它会像我想要的那样创建一个新列表。 现在我想知道如何一次只显示一个并将其保留在浏览器中,直到所有这些都已经完成。

$sqlQuery= "Select * from Techniques Order BY Rand()";
$statement = $db->prepare($sqlQuery);
$statement->execute();
while($row = $statement->fetch(PDO::FETCH_ASSOC)):
    $techniqueName = $row['Technique_name'];
?>
    <ul>
    <li><?php echo $techniqueName; ?></li>
    </ul>
<?php endwhile; ?>

我真的不知道这是否有意义。 如果可能的话,我也想远离javascript,尽管这不是真正的要求。 基本上这是一个有趣的小游戏想法,允许学生练习,而不是多次执行相同的技术,并缺少其他技术。

任何想法将不胜感激。

如果你想“远离javascript”,你可以将值保存在一个存储在会话中的数组中。 在重新加载时,会话中的数组被读取,并从中弹出一个随机值。 在每个请求中,会话中的数组变小,直到数组为空。 然后,您可以从数据库重新加载一组新技术。 源代码可能如下所示:

<?php
session_start();
if (!isset($_SESSION['data'])) {
    /*
     * Access the database here. For testing purposes
     * create a dummy array instead
     */
    $array = range(1, 10);
    shuffle($array);
    $_SESSION['data'] = $array;
}
$value = array_pop($_SESSION['data']);
if (!count($_SESSION['data'])) {
    // array is empty, delete it so a new one gets created on the next request
    unset($_SESSION['data']);
}

echo "The current value is: ".$value."<br />\n";

// only for debugging:
if (isset($_SESSION['data'])) {
    var_dump($_SESSION['data']);
} else {
    echo "No array in 'data' set\n";
}

如果你想使用javascript,你可以加载javascript数组中的所有值。 然后使用javascript迭代数组并显示所需的值,直到结束。 之后,您可以发送新请求以从数据库中获取一组新技术。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM