请解释一下这个PHP语法

时间:2011-06-03 09:03:53

标签: php if-statement string-comparison

我查阅了手册中的功能,但我仍然没有得到这个。根据编写代码的人,如果用户输入“y”,则执行该功能(此处未显示)。但是,由于!,我认为如果用户输入“y”以外的其他内容,函数(此处未显示)将会执行。

请解释(我是一个相对新手,所以尽可能多的细节会有所帮助)。谢谢

if(!strncasecmp(trim(fgets(STDIN)),'y',1)) 

2 个答案:

答案 0 :(得分:10)

fgets(STDIN) - 从标准输入中读取一个字符串(在您的情况下为键盘)。

trim - 删除用户输入周围的任何空格。因此,如果用户输入' y''y ',则会将其转换为'y'

strncasecmp - 用户可以输入大写Y或小写y,此功能可帮助您比较不区分大小写的方式。如果比较成功,此函数也会返回0,然后您使用!(非运算符)将0更改为1,以便if测试通行证。

您可以将其重写为:

if(strncasecmp(trim(fgets(STDIN)),'y',1) == 0) 

答案 1 :(得分:4)

如果字符串之间存在无差异,则函数strncasecmp返回0,因此!检查它们是否相等。