在一个函数中返回2个值,并在同一类的另一个函数中获取这2个值


return 2 values in a function and get the 2 values in another function in the same class

我需要计算2个值的百分比,以及箭头上是向上还是向下。我创建了两个函数来验证,箭头和百分比。

private function porcentagem($a,$b){
        $re = $b * 100 / $a;
        return print round($re,0)."%";
}
private function seta($a,$b){
    if($a < $b){
      return "up";  
    }else{
      return "down";    
    }
}

我创建了一个函数,将数据返回到数组中,使其更有组织。

private static function retornar($a,$b){
return array($a,$b);    
}

现在检查类别数据的函数:

private function new_user(){
        $q       = mysql_query("SELECT * FROM usu4r10s WHERE premium IS NULL AND " . $this->antes);
        $a = mysql_num_rows($q);
        $q       = mysql_query("SELECT * FROM usu4r10s WHERE premium IS NULL AND " . $this->depois);
        $b = mysql_num_rows($q);
        return self::retornar($this->porcentagem($a,$b),$this->seta($a,$b));
}

记住"antes"answers"depois"是一个变量,使之更有条理。

var $antes = "DATEDIFF(NOW(), `data`) < 30";
var $depois = "DATEDIFF(NOW(), `data`) < 0";

现在是最后一个函数,我有问题。

public function _build(){
      $output =   
           '             <span class="mws-report-content">'.
           '                <span class="mws-report-title">Novos Usuários</span>'.
           '                 <span class="mws-report-value '.$this->contas_premiuns(array(0)).'">'.$this->contas_premiuns(array(1)).'</span>'.
           '             </span>';
           try{ 
           return print $output;
           }catch (Exception $e){ 
           return print $e;
           }
}

唯一的问题是我不知道如何在一个函数中返回2个值。

首先,你不应该使用return print(...);,因为它只会返回打印语句的结果,几乎总是true。第二,从相同的函数返回多个值并不是很好的设计,一个函数通常应该有一个单一的用途。

你不能有两个返回语句在一起,因为PHP会在遇到第一个返回语句时退出函数。如果你真的想从一个函数返回两个值,你必须使用你在你发布的代码中使用的相同的方法,return array($firstValue, $secondValue);甚至return array('firstIdentifier' => $firstValue, 'secondIdentifier' => $secondValue);

函数调用只能返回一个值(或不返回),但返回的值可以是数组或对象。所以

return array($value1, $value2);

将返回一个包含两个值的数值数组。

return array('key1' => $value1, 'key2' => $value2);

将返回一个包含两个值的关联数组。

$instance = new stdClass();
$instance->key1 = $value1;
$instance->key2 = $value2;
return $instance;

将返回一个具有两个值的标准类对象。

但是…

尽管这些示例可以让您获得期望的结果,但作为最佳实践,请考虑重构您的函数,使其只返回一个实际值。