为什么print_r返回值和1

时间:2017-07-04 00:25:04

标签: php

我的班级名字

public function getGameName($gameID){
    $gameIDValid = false;

    try {
        $db = database::databaseConnect();

        $getGame_stmt = $db->prepare('SELECT gameID, shortTitle FROM games WHERE gameID =:gameID');
        $getGame_stmt->bindParam(':gameID', $gameID, PDO::PARAM_INT);

        $getGame_stmt->execute();

        if($getGame_stmt->rowCount() == 1){
            $gameIDValid = true;
        }

        $db = NULL;

    } catch (PDOException $e) {
        $gameIDValid = false;
    }

    return $gameIDValid;

}

从我的班级做错误检查

public function validategameID($gameID) {
    $validGame = userValidation::getGameName($gameID);
    if($validGame === false){
         return 'Problem adding your game';
    }
}

我的验证码:

$validatedGameID = $validateUserInput->validategameID($gameID);
die($validatedGameID);

如果我选择了错误的游戏ID,我会收到错误消息。但是,当我使用:

    die(print_r($validatedGameID));

我得到以下输出:

Problem adding your game1

如果我使用正确的游戏ID,则无法执行以下任何其他代码:

die($validatedGameID);

有人可以帮忙吗?当我使用1时,为什么函数在错误消息的末尾返回print_r?为什么即使使用正确的游戏ID,我也无法在die之后执行任何代码?< / p>

2 个答案:

答案 0 :(得分:1)

该行:

die(print_r($validateGameID));

执行以下步骤:

  1. 致电print_r($validateGameID)。这会打印$validateGameID的值,因为这是print_r()在使用1参数调用时所执行的操作。
  2. 使用die()的返回值调用print_r()。使用1参数调用print_r()时返回TRUE。这将执行以下步骤:
    1. 打印1,因为转换为字符串时TRUE变为1
    2. 退出脚本,因为这是die()的作用(它只是exit()的替代名称,但按照错误退出时使用的惯例)
  3. 所以它一起打印$validateGameID,然后打印1,然后退出脚本。

    因为它退出脚本,所以在执行后没有任何内容。

    您可以给print_r()第二个参数,使其返回其参数的格式化版本,而不是打印它:

    die(print_r($validateGameID, true));
    

    或者您可以单独拨打print_r()die()

    print_r($validateGameID);
    die();
    

答案 1 :(得分:0)

print_r函数将其所有输出打印到屏幕并返回true作为值。如果您希望它返回数据而不是打印到屏幕,则将true添加为第二个参数

$dump = print_r($var, true);

请参阅http://php.net/manual/en/function.print-r.php