0

当我比较这些变量时,我的代码总是返回 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'; 
    }
?>
4

3 回答 3

3

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

从我找到的文档中,无论这是什么,

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

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

return: int 活动用户 ID。

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

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:你使用的函数没有返回值。因此,它返回被强制转换为 0 的 null。

<?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'; 
于 2013-10-19T16:15:40.667 回答
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

于 2013-10-19T16:17:19.750 回答
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'; 
       }

?>
于 2013-10-19T16:11:42.353 回答