0

我需要计算 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”和“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 个值。

4

2 回答 2

0

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

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

于 2013-03-29T06:00:17.690 回答
0

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

return array($value1, $value2);

将返回一个具有两个值的数值数组。

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

将返回一个具有两个值的关联数组。

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

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

但...

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

于 2013-03-29T06:08:41.297 回答