PHP if语句返回相同的值

时间:2013-10-19 16:06:12

标签: php variables

当我比较这些变量时,我的代码总是返回true。 我做错了什么?

<?php
    $postuser = (integer)bp_activity_user_id();  //echos 1int(0)
    $posteduser = (integer)bp_activity_comment_user_id();  //echos 3int(0)

    if ( $postuser === $posteduser) {
       echo 'true';
    } else {
       echo 'false'; 
    }
?>

3 个答案:

答案 0 :(得分:3)

您需要使用RETURN该值的函数,而不是输出它。

从我发现的文档来看,无论是什么,

  

bp_activity_user_id()X-Ref   输出活动用户ID。

     

bp_get_activity_user_id()X-Ref   返回活动用户ID。

     

return:int活动用户ID。

您正在使用的函数回显变量,NOT不返回它,因此您无法使用该函数设置变量。这个功能也一样。

  

bp_activity_comment_user_id()X-Ref   输出当前正在显示的活动评论的作者的ID。

     

bp_get_activity_comment_user_id()X-Ref   返回当前显示的活动评论作者的ID。

     

return:int | bool $ user_id显示的作者的user_id

要在赋值中使用,该函数必须返回一个值。这就是为什么你的值总是(int)0:你正在使用的函数没有返回值。因此,它返回null,它被强制转换为0。

<?php
  $postuser = bp_get_activity_user_id();  

  $posteduser = bp_get_activity_comment_user_id(); 

//no need to cast: these functions return integers


     if ( $postuser === $posteduser) {
        echo 'true';
        } else {
        echo 'False'; 

答案 1 :(得分:0)

只需使用intval和==我认为它应该可以正常工作并进行评估

<?php     

      $postuser = intval(bp_activity_user_id());  //echos 1int(0)

      $posteduser = intval(bp_activity_comment_user_id());  //echos 3int(0)

      if ( $postuser == $posteduser) {
          echo 'true';
       } else {
            echo 'False'; 
       }

?>

答案 2 :(得分:0)

你的问题可能是错误的类型:

(integer)更改为(int)

$postuser = (int)bp_activity_user_id();  //echos 1int(0)
$posteduser = (int)bp_activity_comment_user_id();

http://php.net/manual/en/language.types.integer.php