这如何评估为真?

时间:2015-08-26 05:57:53

标签: php if-statement

我正在阅读PHP Cookbook,在关于表格的部分中有这样的:

问题:您希望确保为表单元素提供了值。例如,您要确保文本框未留空。

然后作者详细说明了这一点:

// Making sure $_POST['flavor'] exists before checking its length
    if (! (filter_has_var(INPUT_POST, 'flavor') &&
        (strlen(filter_input(INPUT_POST, 'flavor')) > 0))) {
        print 'You must enter your favorite ice cream flavor.';
    }

我不明白这个'和'表达式评估为真 赢了!(filter_has_var(INPUT_POST,'flavor')总是假的?

2 个答案:

答案 0 :(得分:1)

关键是括号的顺序。检查我放在相应括号下的克拉标志:

( !(filter_has_var(INPUT_POST,'flavor') && (strlen(filter_input(INPUT_POST,'flavor'))>0)) )
   ^                                                                                    ^

所以它实际检查:"if not both are true"

你可以这样重写"if X is not true or Y is not true"

( !filter_has_var(INPUT_POST,'flavor') || !strlen(filter_input(INPUT_POST,'flavor')) > 0 )

在我看来,这个最后一个版本更具可读性,因此我实际上更喜欢它。

答案 1 :(得分:0)

loginbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TODO Auto-generated method stub // get the user details email or password String useremail = emailornumber.getText().toString(); String password = userpassword.getText().toString(); //fetch the password from the database String storedPassword = databaseAdapter.getUserInfo(dpassword); // check if password is match if(userpassword.equals(storedPassword)){ Toast.makeText(LoginActivity.this, "You are Login", Toast.LENGTH_LONG).show(); Intent in = new Intent(LoginActivity.this, MainActivity.class); } else { Toast.makeText(LoginActivity.this, "Username and Password Does not match", Toast.LENGTH_LONG).show(); } } 将确保表单已发送filter_has_var(INPUT_POST, 'flavor')变量后

flavor将确保strlen(filter_input(INPUT_POST, 'flavor')) > 0帖子变量不是flavor(空字符串)

使用""!运算符应用于整个表达式,并确保这两个条件均为false,以使其成为真。