大于x且小于y php无法正常工作

时间:2012-01-30 05:26:03

标签: php random if-statement

我正在尝试根据数字来声明一个变量。

我正在尝试“如果$ 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

3 个答案:

答案 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'];

?>