PHP中的条件IF

时间:2016-05-17 14:03:16

标签: php

我有代码:

   function insertChamado($id, $area = 2)
   {

   if ($area != 2 && $area != 4)
    $area = 2;

如何将此代码调整为不接受0条件,如下面的日志所示:

[12-May-2016 16:58:28 America/Sao_Paulo] id = 36445, area = 0
[12-May-2016 16:59:00 America/Sao_Paulo] id = 14635, area = 0
[12-May-2016 17:00:02 America/Sao_Paulo] id = 18599, area = 0

2 个答案:

答案 0 :(得分:2)

只需添加一个条件来检查它......不确定它有什么用处,除非我们遗漏了什么。

   function insertChamado($id, $area = 2)
   {
       if ($area == 0) die("Ruh-Rohh");
       if ($area != 2 && $area != 4)
           $area = 2;
   }

或者,如果它是0,则预计它为2:

   function insertChamado($id, $area = 2)
   {
       if (($area != 2 && $area != 4) || $area == 0) // Though || $area == 0 actually does nothing here as 0 already meets the previous condition.
           $area = 2;
   }

事实上,在我的原始代码中,$ area永远不会是0!因为0!= 2和0!= 4因此$ area = 2.我怀疑实施问题,如果这没有帮助我建议您编辑问题以包含更多代码。

可能是范围问题,因为您没有使用全局$区域而且没有返回值,更改后的$ area可能不会突破该功能。

尝试其中一种实现:

使用全球

$area = 0; // for testing only
function insertChamado($id)
{
    global $area;
    if ($area != 2 && $area != 4)
        $area = 2;
}

或使用退货:

$area = insertChamado(0,0);
function insertChamado($id, $area = 2)
{
    if ($area != 2 && $area != 4)
        $area = 2;
    return $area;
}

您提供的不完整代码无效,因为我不知道id的实现是什么。

答案 1 :(得分:0)

仔细阅读您的问题后,我认为您的最佳解决方案是简单的switch

function insertChamado($id, $area = 2){
    switch ($area) {
        case 2:
            echo "area equals 2\n";
            break;
        case 4:
            echo "area equals 4\n";
            break;
        default:
            echo "area is always 2 other wise\n";
    }
}

insertChamado('id',0); // will output "area is always 2 other wise"

insertChamado('id'); // will output "area equals 2"