【发布时间】:2020-12-31 07:22:09
【问题描述】:
我只是在学习 for 循环之类的东西,并成功解决了 FizzBuzz 问题,我当前的代码是这样的:
<?php
for ($i = 1; $i <= 100; $i++) {
if ($i % 15 == 0) {
echo 'FizzBuzz<br>';
} elseif ($i % 3 == 0) {
echo 'Fizz<br>';
} elseif ($i % 5 == 0) {
echo 'Buzz<br>';
} else {
echo $i . '<br>';
}
}
?>
现在我想知道如果我们有一个 MySQL 表,其中包含 100 行,其中包含 1 到 100 的数字。
CREATE TABLE numbers_from_one_to_hundred (
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
numbers INT(11) NOT NULL
);
现在我想解决与 numbers_from_one_to_hundred 相关联的 PHP 和 MySQLi 的 FizzBuzz 问题。
顺便说一句,我没有使用任何准备好的语句和东西,因为我不擅长它们,这只是一个宠物项目,所以不用担心安全问题。
所以我做了这样的事情,但没有成功:
$query = "SELECT * FROM `numbers_from_one_to_hundred`";
$results = mysqli_query($con, $query);
while ($row = mysqli_fetch_array($results)) {
$numbers = $row['numbers'];
for ($i = 1; $i <= $numbers; $i++) {
if ($i % 15 == 0) {
echo 'FizzBuzz<br>';
} elseif ($i % 3 == 0) {
echo 'Fizz<br>';
} elseif ($i % 5 == 0) {
echo 'Buzz<br>';
} else {
echo $i . '<br>';
}
}
}
有人能解释一下这有什么问题吗?它实际上根本没有输出任何东西,但是当我尝试 print_r 的结果时,它似乎确实给出了结果,所以我的逻辑可能有问题我做这一切完全错了吗?有人可以向我解释这应该怎么做吗?
【问题讨论】:
-
如果您希望对行进行排序,则需要在查询中添加“按数字排序”。分配时是否需要将数字转换为 int ? “它根本不输出任何东西”没有帮助。然后至少给我们 print_r 输出。
-
@AllanWind 好的,我将添加 print_r 输出,是的,我确实希望对我的行进行排序,我会立即将其添加到我的查询中,不,我不一定需要将它们转换为 int 还是我?抱歉有点垃圾,我只是一个初学者。
-
@AllanWind 这里是 print_r 输出
mysqli_result Object ( [current_field] => 0 [field_count] => 2 [lengths] => [num_rows] => 99 [type] => 0 ) -
哦 @AllanWind 感谢使用 ORDER BY 关键字对其进行排序确实有效 感谢您的帮助 我想自己回答我的问题,以便其他人也可以得到帮助
-
因为我不记得如何使用 for 解析结果。新年快乐
标签: php mysql for-loop fizzbuzz