将if和Else Statement变成我可以回应的东西?

时间:2013-11-21 12:20:38

标签: php if-statement echo

基本上,下面是我目前拥有并运行的PHP,并且“转换”完美,但我确实想把它放在一个已经有效的字符串中。

    $level0 = 0;
    $level1 = 24999;
    $level2 = 49999;
    $level3 = 74999;
    $level4 = 99999;
    $level5 = 124999;

    if ($myallcreadits < $level0) { 
        echo('LEVEL0'); }
    if ($myallcreadits < $level1) { 
        echo('LEVEL1'); }
    if ($myallcreadits < $level2) { 
        echo('LEVEL2'); }
    if ($myallcreadits < $level3) { 
        echo('LEVEL3'); }
    if ($myallcreadits < $level4) { 
        echo('LEVEL4'); }
    if ($myallcreadits < $level5) { 
        echo('LEVEL5'); }

即我的例子是在页面下方进一步实现以下示例:

$details='<div id="level">'.$level.'</div>'

我希望它能够回应当前的水平,它取决于它是否在不同的地方更低或相等,因为我不想回应它们目前所处的当前水平。

4 个答案:

答案 0 :(得分:3)

这样做

<?php

$level0 = 0;
$level1 = 24999;
$level2 = 49999;
$level3 = 74999;
$level4 = 99999;
$level5 = 124999;

$myallcreadits = 24543;


if ($myallcreadits < $level0) {
    $level='LEVEL0'; }
elseif ($myallcreadits < $level1) {
    $level='LEVEL1'; }
elseif ($myallcreadits < $level2) {
    $level='LEVEL2'; }
elseif ($myallcreadits < $level3) {
    $level='LEVEL3'; }
elseif ($myallcreadits < $level4) {
    $level='LEVEL4'; }
elseif ($myallcreadits < $level5) {
    $level='LEVEL5'; }

echo $details='<div id="level">'.$level.'</div>'; //Prints LEVEL1

答案 1 :(得分:1)

真的,为什么会这样呢?你的逻辑错误:你会用new覆盖你的旧值,因为如果$myallcreadits < 49999那么显然也是< 124999。另外,使用数组 - 如果你有50个级别怎么办?

$levels = [
  'LEVEL0'=>0, 
  'LEVEL1'=>24999, 
  'LEVEL2'=>49999, 
  'LEVEL3'=>74999, 
  'LEVEL4'=>99999, 
  'LEVEL5'=>124999
];
//$myallcreadits=50000;
$filter = array_filter($levels, function($x) use ($myallcreadits)
{
   return $x<$myallcreadits;
});
end($filter);
$result = key($filter);
$details='<div id="$result">'.$result.'</div>';

更新

如果您希望您的等级为步骤25000(显然减去1),请使用:

$values = array_map(function($x)
{
   return $x-1;
}, range(0, 125000, 25000));
$values[0] = 0;
$keys   = array_map(function($x)
{
   return 'LEVEL'.$x;
}, range(0, count($values)-1));
$levels = array_combine($keys, $values); 

答案 2 :(得分:0)

最好使用一些动态水平值。

$levels = array(1 => 0, 24999, 49999, 74999, 99999, 124999);

$myallcreadits = 60000;
$current_level = 0;
foreach($levels as $index => $level)
  {
  if ($myallcreadits > $level)
    $current_level = $index;
  }

echo $current_level;

答案 3 :(得分:0)

所以你似乎想要达到的目的是将你的学分放到多个层面。

$level = ceil( ($credits + 1) / 25000);

if ($level < 0) $level = 0;
if ($level > 5) $level = 5;

$leveltext = 'LEVEL' + $level;

echo $leveltext;

但是,我认为你应该尝试运行你的代码,因为它会打印出来:LEVEL1LEVEL2LEVEL3LEVEL4LEVEL5