gpt4 book ai didi

php - 为什么这个 if 测试不起作用?

转载 作者:行者123 更新时间:2023-11-30 23:56:23 26 4
gpt4 key购买 nike

我的站点需要一个基于用户建立权限的登录。在站点的照片列表中,我必须确定如果用户只有 guest 访问权限,是否会显示特定照片。所以我认为这个 if else 语句会起作用:

if (!($mysql_row['guest_access'] == 'NO') AND ($_SESSION['user_level'] == 'GUEST')) {

// show the photo if it isn't private and the user isn't a guest

但事实并非如此。

但是,如果我将这个测试分成三行,那么它就可以正常工作。

$is_private_photo = $mysql_row['guest_access'] == 'NO';  
$is_guest = $_SESSION['user_level'] == 'GUEST';
$both_private_and_guest = ($is_private_photo AND $is_guest);

if (!$both_private_and_guest) {
// show the photo if it isn't private and the user isn't a guest

第一个版本有什么问题?

最佳答案

你的第一个if是

if (!($mysql_row['guest_access'] == 'NO') AND ($_SESSION['user_level'] == 'GUEST'))

实际上是这样解释的:

if (
(!($mysql_row['guest_access'] == 'NO'))
AND ($_SESSION['user_level'] == 'GUEST')
)

! 仅适用于第一个条件,而不适用于两个条件,因为它的优先级高于 AND(参见 Operator Precedence)


您的条件可能应该用一些额外的括号重写:

if (!(($mysql_row['guest_access'] == 'NO') AND ($_SESSION['user_level'] == 'GUEST')))

因此 ! 应用于整个条件。

关于php - 为什么这个 if 测试不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1953701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com