php - 不能通过调用返回函数在 php 中返回 2 个变量?

标签 php

1st 我不得不说我不是 php 专业人士,这是我第一次使用 return()。

所以这是代码。 我需要返回 false 和函数剩余的分钟数。

if(!checkIpn())
    $err[]='you need to wait'.$nresting.'minutes before you send another request';
function checkIpn()
{
    $useripe = 0;  
 if ( isset($_SERVER["REMOTE_ADDR"]) )    {     $useripe = $_SERVER["REMOTE_ADDR"] ; } 
 else if ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) )    {     $useripe =  $_SERVER["HTTP_X_FORWARDED_FOR"] ; } 
 else if ( isset($_SERVER["HTTP_CLIENT_IP"]) )    {     $useripe =  $_SERVER["HTTP_CLIENT_IP"] ; }


 $query  = "SELECT * FROM table WHERE ip = '$useripe' AND status = 'pending' ORDER BY id ASC"; 
 $result = mysql_query($query) or die(mysql_error());   
 $num_rows = mysql_num_rows($result);  

  if ( $num_rows > 0 ) 
 {  
    $str_today = date("Y-m-d H:i:s"); 
    $i=1; 
    while($row = mysql_fetch_assoc($result)) 
        { 
            $str_start = $row['date'];    
            $str_start = strtotime($str_start);  
            $str_end = strtotime($str_today);    
            $nseconds = $str_end - $str_start;   
            $nminutes = round($nseconds / 60);    
                    if ( $nminutes > 120 ) 
                            { return true; } 
                    else    { 
                            $nresting = 120 - $nminutes;
                            return false; }  
            $i++; 
        } 
 } 
 else { return true; }  

基于下面的 Tadeck 回答。我是这样做的:

$result = checkIpn();
if($result[0]==false)
    $err[]='you need to wait '.$result[1].' minutes before you send another request';

谢谢塔德克。

最佳答案

如果你想使用一次调用返回两个不同的变量,你可以使用类似的东西:

return array(true, 0);

return array(true);

第一种情况(返回成功时)和

return array(false, $minutes);

第二种情况(返回失败)

然后你可以这样检查:

$result = checkIpn();

if ($result[0]) {
    echo 'Success.';
} else {
    echo 'Failure. Minutes to wait: '.$result[1];
}

希望对您有所帮助。

编辑:

如果我没理解错的话,你会返回 true 或分钟数 > 0(大于零)。因此,您可以在成功的情况下使用这样的返回:

return true;

在失败的情况下:

return $minutes;

然后你就可以通过以下方式在代码中使用它了:

$result = checkIpn();

if ($result === true) {
    echo 'Success';
} else {
    echo 'Failure. Minutes to wait: '.$result;
}

而且我想建议您正确记录此类函数,这样当它返回整数而不是 bool 值时,没有人会感到惊讶;)

关于php - 不能通过调用返回函数在 php 中返回 2 个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5915645/

相关文章:

javascript - 从数组值中获取值以形成聊天

php - 如何使用 MVC 结构在 CakePHP 3 中正确构建代码并在 Controller 之间进行通信?

PHP - 如何从新创建的用户获取信息

php - 从 PHP 中的字符串中删除 </div> HTML 标记

php - 如何在值包含两个或多个单词的数组中搜索字符串 (PHP)

php - 创建全局可访问的 MySQLi 对象

php - 增加数组中未设置变量/新键的好方法

php - Date.UTC() 与 strtotime() ??为什么不同?

php - 操作后如何在表格上保持相同的分页页面

php - mysql插入查询自动递增值