Php 设置变量的更有效方法?

Php 设置变量的更有效方法?,php,Php,我最近创建了一个if语句脚本,它根据数字表示的内容设置变量。在意识到脚本相当长,而且很可能可以以更有效的方式完成后,我在互联网上查看,没有发现太多结果。这是我的剧本 if ($row[position] == 1){ $variable = 1; } elseif ($row[position] == 2){ $variable = 1; } elseif ($

我最近创建了一个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;

?>

这应该适合您

<?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模式:-

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

除了Rizier123的答案,您还可以使用PHP_ROUND_HALF_UP模式:-

$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$变量的期望值

$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

您可以使用%(mod)运算符和除法(/)来完成此操作

这是诀窍

1.使位置均匀。也就是说,如果职位已经持平,则将其保留,否则添加1使其持平

2.将位置除以2,得到var$变量的期望值

$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 so 6=>variable=6/2=>3

$variable=ceil($row[“position”]/2)
?这非常有效。现在要理解,为什么使用ceil会给出3/2的值2和4/2的值2?编辑:我做了研究。Ceil向上取整为浮点数。所以3/2=1.5,但它四舍五入为2。“非常感谢你。”里克。它向上取整到下一个整数!请参见
$variable=ceil($row[“position”]/2)
?这非常有效。现在要理解,为什么使用ceil会给出3/2的值2和4/2的值2?编辑:我做了研究。Ceil向上取整为浮点数。所以3/2=1.5,但它四舍五入为2。“非常感谢你。”里克。它向上取整到下一个整数!谢谢你的帮助!我感谢你的帮助!