繁体   English   中英

设置变量的更有效方法?

[英]More efficient way to set a variable?

我最近创建了一个if语句脚本,该脚本根据数字表示的内容设置变量。 在意识到脚本很长并且很可能可以以更有效的方式完成脚本之后,我在互联网上查看并没有发现太多结果。 这是我的剧本

            if ($row[position] == 1){
                $variable = 1;
            } elseif ($row[position] == 2){
                $variable = 1;
            } elseif ($row[position] == 3){
                $variable = 2;
            } elseif ($row[position] == 4){
                $variable = 2;
            } elseif ($row[position] == 5){
                $variable = 3;
            } elseif ($row[position] == 6){
                $variable = 3;
            } elseif ($row[position] == 7){
                $variable = 4;
            } elseif ($row[position] == 8){
                $variable = 4;
            } elseif ($row[position] == 9){
                $variable = 5;
            } elseif ($row[position] == 10){
                $variable = 5;
            } elseif ($row[position] == 11){
                $variable = 6;
            } elseif ($row[position] == 12){
                $variable = 6;
            } elseif ($row[position] == 13){
                $variable = 7;
            } elseif ($row[position] == 14){
                $variable = 7;
            } elseif ($row[position] == 15){
                $variable = 8;
            } elseif ($row[position] == 16){
                $variable = 8;
            }

如您所见,这是一个非常基本的模式。

1 = 1
2 = 1
3 = 2
4 = 2
5 = 3
6 = 3 

等等...

我希望完成的工作不是很多,但我只是想知道我应该如何做。 谢谢。

这应该为你工作

<?php

    $row["position"] = 4;  //example

    //if (($row["position"] >= 1) && ($row["position"] <= 16) ) -> if you only want to set the variable if it's between 1 and 16 or something else use this if statement
    $variable = ceil($row["position"] / 2);

    echo $variable;

?>

除了Rizier123的答案,您还可以在PHP_ROUND_HALF_UP模式下使用round()

$numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];

foreach($numbers as $number){
    echo round($number / 2, 0, PHP_ROUND_HALF_UP) . "\n";
}

看到它正常工作

您可以使用%(mod)运算符和除法(/)来解决问题

这是诀窍,

1.使位置均匀。 即如果位置已经是偶数,否则加1使其变为偶数。

2将位置除以2得到var $ variable的期望值

$pos = $row[position];
if ($pos % 2 == 1) //Check for odd
{ 
     $pos = $pos + 1; //odd+1 =even (converting odd as even)
}

$variable = $pos/2; 

例:

$ row [position] = 3 => $ pos是奇数,因此使它等于3 + 1,所以4 => variable = 4/2 => 2

$ row [position] = 4 => $ pos保持原样=> variable = 4/2 => 2

$ row [position] = 5 => $ pos是奇数,因此将其设为5 + 1,所以6 => variable = 6/2 => 3

暂无
暂无

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

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