这个使用php if if else的函数有什么问题?

时间:2012-01-30 17:07:00

标签: php if-statement

我有这个代码但是没有用,我不知道为什么......

function link_next($local_id, $link_type) {
  if ( !is_numeric($local_id) )      die(); 
  elseif ($link_type = 'a-href')   { $something = 'a-href'; }
  elseif ($link_type = 'link-rel') { $something = 'link-rel'; }
  else                             { $something = 'blablabla'; } 

  return $local_id.'-'.$something;
} 

$id ='14678';
echo link_next($id, 'link-rel');

//编辑

该功能始终显示14678-a-href

7 个答案:

答案 0 :(得分:8)

您在条件检查中使用=。您需要使用=====(严格比较)

答案 1 :(得分:1)

您的代码错误,您在if-else条件中使用'='运算符而不是'=='运算符。 这将为链接类型赋值。您需要更改代码:

function link_next($local_id, $link_type) {

    if (!is_numeric($local_id)) 
           return false;

    if ($link_type == 'a-href') {
        $something = 'a-href';
    } elseif ($link_type == 'link-rel') {
        $something == 'link-rel';
    } else {
        $something = 'blablabla';
    }
    return $local_id.'-'.$something;
} 

希望这有帮助

答案 2 :(得分:0)

您正在使用赋值运算符而不是等价运算符。 Aka你正在使用=而不是==。

你可以在if中使用赋值,但是你会说“为变量赋值,然后如果变量不为空则条件为真”。 (其中empty为0,false,'',null等。)

编辑:得到了忍者。这是因为我觉得我更啰嗦。

答案 3 :(得分:0)

你必须使用两个相同的符号:

elseif ($link_type == 'a-href')   { $something = 'a-href'; }
elseif ($link_type == 'link-rel') { $something = 'link-rel'; }

否则,您将$link_type设置为指定的字符串!

答案 4 :(得分:0)

您正在使用赋值运算符=而不是比较运算符=====(严格)。

同时正确缩进代码有助于您轻松发现错误。

function link_next($local_id, $link_type) {
 if ( !is_numeric($local_id) ){ 
       die(); 
    }
 elseif ($link_type == 'a-href') {
      $something = 'a-href'; 
    }
 elseif ($link_type == 'link-rel') { 
    $something = 'link-rel';
    }
 else { 
    $something == 'blablabla'; 
    } 

 return $local_id.'-'.$something;
} 

 $id ='14678';
 echo link_next($id, 'link-rel'); 
 echo link_next($id, 'link-rel');

答案 5 :(得分:0)

你有三个问题:

  1. 您的代码无法读取 - 构建它以便可以阅读
  2. 您正在使用分配=)而非相等==)来比较字符串 - 这就是打破代码的原因
  3. -

    function link_next($local_id, $link_type) {
    
        // early exit
        if (!is_numeric($local_id)) die();
    
        if ($link_type == 'a-href') {
            $something = 'a-href';
        } elseif ($link_type == 'link-rel') {
            $something == 'link-rel';
        } else {
            $something = 'blablabla';
        }
        return $local_id.'-'.$something;
    } 
    

答案 6 :(得分:-1)

试试这个:

function link_next($local_id, $link_type) { 

if ( !is_numeric($local_id) ){ 
    die(); 
} elseif ($link_type == 'a-href') { 
    $something = 'a-href'; 
} elseif ($link_type == 'link-rel') { 
    $something = 'link-rel'; 
} else { 
    $something = 'blablabla';
}

return $local_id.'-'.$something;

}

我刚刚纠正了第一次检查时没有{}的事实,不确定这是否重要但是嘿,值得一试。