PHP if-elseif 函数与条件 (issue)


php if-elseif function with condition (issue)

我写了一个包含if语句的php函数,但它似乎不起作用。(我已经经历过一次了,我想知道为什么)

这是函数:

function calculate_price_index($price){
    if($price > 0 && $price <= 99){
        $price_index = 8;   
    } elseif($price >= 100 && $price <= 199){
        $price_index = 1;   
    } elseif($price >= 200 && $price <= 299){
        $price_index = 2;   
    } elseif($price >= 300 && $price <= 399){
        $price_index = 3;   
    } elseif($price >= 400 && $price <= 499){
        $price_index = 4;   
    } elseif($price >= 500 && $price <= 599){
        $price_index = 5;   
    } elseif($price >= 600 && $price <= 699){
        $price_index = 6;   
    } elseif($price >= 700){
        $price_index = 7;   
    }
}

我想像这样执行它:

calculate_price_index($_POST['price']);
echo $price_index;

但它没有回应任何东西。但是,当我不将其声明为函数时,它可以正常工作。

谢谢!

必须在函数末尾使用

return $price_index;

两种方法可以做到这一点(不要想知道你的if-else可以更轻):

  1. 函数必须返回price_index所以用返回 $price_index 结束它;

并写入

echo calculate_price_index($_POST['price']);
  1. 在函数中使用全局,并通过全局 $price_index 启动它;
function calculate_price_index($price){
    if($price > 0 && $price <= 99){
        $price_index = 8;   
    } elseif($price >= 100 && $price <= 199){
        $price_index = 1;   
    } elseif($price >= 200 && $price <= 299){
        $price_index = 2;   
    } elseif($price >= 300 && $price <= 399){
        $price_index = 3;   
    } elseif($price >= 400 && $price <= 499){
        $price_index = 4;   
    } elseif($price >= 500 && $price <= 599){
        $price_index = 5;   
    } elseif($price >= 600 && $price <= 699){
        $price_index = 6;   
    } elseif($price >= 700){
        $price_index = 7;   
    }
 // return your values from here
 return $price_index;
}

我想像这样执行它:

$price_index = calculate_price_index($_POST['price']);
echo $price_index;

您可能正在使用全局$price_index

在 PHP 中,全局变量需要像这样使用:

function calculate_price_index($price){
    if($price > 0 && $price <= 99){
         $GLOBALS['price_index'] = 8;   
    } elseif($price >= 100 && $price <= 199){
         $GLOBALS['price_index'] = 1;   
    } elseif($price >= 200 && $price <= 299){
         $GLOBALS['price_index'] = 2;   
    } elseif($price >= 300 && $price <= 399){
         $GLOBALS['price_index'] = 3;   
    } elseif($price >= 400 && $price <= 499){
         $GLOBALS['price_index'] = 4;   
    } elseif($price >= 500 && $price <= 599){
         $GLOBALS['price_index'] = 5;   
    } elseif($price >= 600 && $price <= 699){
         $GLOBALS['price_index'] = 6;   
    } elseif($price >= 700){
         $GLOBALS['price_index'] = 7;   
    }
}

参考: http://www.w3schools.com/php/php_superglobals.asp

尝试将 echo() 函数放在 calculate_price_index() 函数中。我编辑了你的代码:

<?php
function calculate_price_index($price){
if($price > 0 && $price <= 99){
    $price_index = 8;   
} elseif($price >= 100 && $price <= 199){
    $price_index = 1;   
} elseif($price >= 200 && $price <= 299){
    $price_index = 2;   
} elseif($price >= 300 && $price <= 399){
    $price_index = 3;   
} elseif($price >= 400 && $price <= 499){
    $price_index = 4;   
} elseif($price >= 500 && $price <= 599){
    $price_index = 5;   
} elseif($price >= 600 && $price <= 699){
    $price_index = 6;   
} elseif($price >= 700){
    $price_index = 7;   
}
echo $price_index;
}
calculate_price_index(500);
?>

如果要使用 $_POST,请确保将其转换为整数。

你应该返回变量在末尾使用,如下所示:

 return $price_index;