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

时间:2013-03-29 05:51:44

标签: php mysql

我需要计算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));
}

记住&#34; antes&#34;和&#34; depois&#34;是一个变得更有条理的变量。

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个值。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

return array($value1, $value2);

将返回带有两个值的数值数组。

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

会返回一个带有两个值的关联数组。

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

将返回标准类的对象,其中包含两个值。

<强> BUT ...

虽然这些示例允许您实现所需的结果,但作为最佳实践,请考虑重构您的函数以仅返回一个实际值。