检查变量是否为0且不为空

时间:2016-02-11 11:52:57

标签: php

我正在使用表单将值发布到我的PHP类。

<?php
    if(!empty($_POST)){
        require_once('../../handling/admin_add_user.php');

        $add_username = $_POST['add_username'];
        $add_email = $_POST['add_email'];
        $add_gender = $_POST['add_gender'];
        $add_server = $_POST['add_server'];
        $add_coins = $_POST['add_coins'];

        $user_add = new admin_add_user($add_username, $add_email, $add_gender, $add_server, $add_coins);
        $user_add_response = $user_add->class_handler();
        echo $user_add_response;
    }
?>

在函数class_handler内部我正在使用$this->coins检查isset function参数的值是否为空,遗憾的是函数总是会返回错误消息,因为我会放一个 0 作为值。

<?php
    class admin_add_user extends database {
        function __construct($username, $email, $gender, $server, $coins){
            $this->username = $username;
            $this->email = $email;
            $this->gender = $gender;
            $this->server = $server;
            $this->coins = $coins;
        }

        function add_user(){
            $this->connect();
            $this->execute_query("INSERT INTO Users (username, email, gender, server, active, activate_key, coins) VALUES ('" . $this->username . "', '" . $this->email . "', '" . $this->gender . "', '" . $this->server . "', 1, 0, " . $this->coins . ")");
        }

        function class_handler(){
            if(!$this->username){
                return 'Please enter a username.';
            }else if(!$this->email){
                return 'Please enter a email.';
            }else if(!$this->gender){
                return 'Please select a gender.';
            }else if(!$this->server){
                return 'Please select a server.';
            }else if(isset($this->coins)){
                return 'Please enter a coin value. eG: 0';
            }else{
                $this->add_user();
                return 'Succesfull added the following account to the database: ' . $this->username;
            }
        }
    }
?>

我如何设法检查$this->coins变量是否为空但可能包含int 0

4 个答案:

答案 0 :(得分:1)

我认为这应该有效:

(isset($this->coins) && $this->coins == 0)

如果没有,请发布完整错误消息

答案 1 :(得分:0)

要检查是否设置了变量,您可以使用:

isset( $this->coins );

如果变量设置为0,则返回True;

要检查变量是否设置为零,您必须使用:

$this->coins === 0;

答案 2 :(得分:0)

由于该值来自POST,因此它始终是一个字符串。你应该做点什么:

(isset($this->coins) && (!empty($this->coins) || $this->coins === '0')) 

empty()在这种情况下不起作用。因为'0'仍然是空的。

答案 3 :(得分:0)

在这种情况下使用!empty: -

!empty($this->coins) //true if $this->coins is neither 0, empty, or set at all';

够了。