0

2 つの値のパーセンテージと、矢印の上か下かを計算する必要があります。わかりましたので、確認するために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));
}

「アンティ」と「デポア」は、より組織化するための変数であることを思い出してください。

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. 第 2 に、同じ関数から複数の値を返すのはあまり良い設計ではありません。通常、関数は 1 つの目的を持つ必要があります。

最初の return ステートメントが検出されると、PHP は関数を終了するため、2 つの return ステートメントを続けて使用することはできません。関数から 2 つの値を本当に返したい場合は、投稿したコードで使用したのと同じメソッドを使用する必要がありreturn array($firstValue, $secondValue);ますreturn array('firstIdentifier' => $firstValue, 'secondIdentifier' => $secondValue);

于 2013-03-29T06:00:17.690 に答える
0

関数呼び出しから値を1 つだけ(またはまったく返さない) 返すことができますが、返される値は配列またはオブジェクトである可能性があります。そう

return array($value1, $value2);

2 つの値を持つ数値配列を返します。

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

2 つの値を持つ連想配列を返します。

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

2 つの値を持つ標準クラスのオブジェクトを返します。

しかし...

これらの例では目的の結果を得ることができますが、ベスト プラクティスとして、実際の値を 1 つだけ返すように関数をリファクタリングすることを検討してください。

于 2013-03-29T06:08:41.297 に答える