我正在尝试根据数字来声明一个变量。
我正在尝试“如果$ var小于[金额]且大于[金额] var = blah elseif $ var小于[金额]且大于[金额] var = blah”等。是我的代码:
$randomNumber = rand(1, $funnyPicsHigh);
if($randomNumber > 0 && $randomNumber < 2001){
$directory_to_use = 1;
}elseif($randomNumber > 2000 && $randomNumber < 4001){
$directory_to_use = 2;
}elseif($randomNumber > 4000 && $randomNumber < 6001){
$directory_to_use = 3;
}elseif($randomNumber > 6000 && $randomNumber < 8001){
$directory_to_use = 4;
}elseif($randomNumber > 8000 && $randomNumber < 10001){
$directory_to_use = 5;
}elseif($randomNumber > 10000 && $randomNumber < 12001){
$directory_to_use = 6;
}elseif($randomNumber > 10000 && $randomNumber < 12001){
$directory_to_use = 7;
}elseif($randomNumber > 12000 && $randomNumber < 14001){
$directory_to_use = 8;
}elseif($randomNumber > 14000 && $randomNumber < 16001){
$directory_to_use = 9;
}elseif($randomNumber > 16000 && $randomNumber < 18001){
$directory_to_use = 10;
}elseif($randomNumber > 18000 && $randomNumber < 20001){
$directory_to_use = 11;
}
我开始使用if thenif用于所有内容,然后我更改了它,因为它是&gt; =和&lt; =,仍然无法工作,然后我尝试在我的数字之前和之后放置“”这是你看到的现在,仍然没有工作。
随机数执行得很好,但它似乎选择一个随机目录。我将刷新页面,并为要使用的目录选择5。我再次刷新它,它选择1,然后选择1,然后选择3.它似乎只是随机选择一个数字。
我做错了什么?
把它弄清楚,谢谢大家。这是由于我的逻辑而不是提供的代码。大声说话试图解释我的问题是什么帮助我,所以谢谢。如果想知道工作代码是什么,它就在这里: http://pastebin.com/en2sc3HC
答案 0 :(得分:13)
您的代码可以大大简化
$directory_to_use = ceil(rand(1, $funnyPicsHigh) / 2000);
如果是拼写错误
}elseif($randomNumber > 10000 && $randomNumber < 12001){
$directory_to_use = 6;
}elseif($randomNumber > 10000 && $randomNumber < 12001){
$directory_to_use = 7;
答案 1 :(得分:0)
我按原样运行代码,循环100次,最后使用以下语句:
echo nl2br("Number: {$randomNumber} \r\n");
echo nl2br("Directory: {$directory_to_use} \r\n");
得到这样的输出:
Number: 19984
Directory: 11
Number: 16677
Directory: 10
Number: 12097
Directory: 8
Number: 10123
Directory: 6
Number: 8341
Directory: 5
Number: 18832
Directory: 11
Number: 13325
Directory: 8
Number: 5228
Directory: 3
Number: 11034
Directory: 6
Number: 3605
Directory: 2
Number: 19827
Directory: 11
简而言之,您的代码按预期工作。
答案 2 :(得分:0)
来自PHP docs:
如果您将数字与字符串进行比较或比较涉及 数字字符串,然后每个字符串转换为一个数字和 比较用数字表示。
因此,使用数字文字周围的引号应该不是问题。继续......
随机数执行得很好......似乎只是随机选择一个数字。我做错了什么?
......没有!如果每次刷新页面时它都会随机更改,则每次都必须运行rand()
。如果您希望在刷新页面后该目录保持不变,请考虑将其存储在会话变量中,检查它是否在页面加载时设置,如果是,则不要重新生成它。将这个想法与@ cheery's结合起来:
<?php
session_start();
// store random directory in a session var if not set
if (!$_SESSION['randir']) {
$_SESSION['randir'] = ceil(rand(1, $funnyPicsHigh) / 2000);
}
$directory_to_use = $_SESSION['randir'];
?>