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