繁体   English   中英

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

[英]Turning if and Else Statement into something I can 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>'

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

这样做

<?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

真的,为什么这样的事情呢? 你的逻辑错误:你将用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); 

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

$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;

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

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

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

$leveltext = 'LEVEL' + $level;

echo $leveltext;

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

暂无
暂无

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

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