0

私はYiiコードを持っています-

public function actionpublishPollResult()
    {
        $model=new Polloption();
        $json='{"pollId":2}';    
        $obj=json_decode($json);
        $model->pollId=$obj->pollId;
        $options=Polloption::model()->findAllByAttributes(array('pollId'=>$model->pollId));
        $total=0;

        foreach ($options as $option)
        {

            echo "option id :-".$option->optionId."<br>";
            $vote=new Pollvote();
            echo "Number of votes to option :".$option->optionId." "."is=".count($option->pollvotes)."</br>";
            $total=$total+count($option->pollvotes);
            $data[] =count($option->pollvotes);
        }
        echo "</br>";
        echo "Total number of votes obtained=".$total;
        foreach ($data as $votepercentage)
        {
            $percentageResult[]=$votepercentage/$total*100;
        }

        echo "</br>";
        echo CJSON::encode(array('options'=>$options,'percentagevotes'=>$percentageResult));

    }

したがって、次のような出力が得られます

{"options":[{"optionId"=>1,"option"=>"abc"},{"optionId"=>2,"option"=>"xyz"}],{"percentagevotes":[25 ,75]}}

しかし、私はこのパーセント投票フィールドをオプション配列にのみ追加したいと考えています。したがって、上記の foreach 構造にどのような変更を加える必要がありますか。$total は、オプションのループ全体が実行された後にのみ取得されるため..したがって、オプションのみの foreach で percentvotes フィールドを計算して追加する方法。私を案内してください...

4

1 に答える 1

0

foreach2番目のループを次のように編集します

$toJson=array();
foreach ($data as $i=>$votepercentage)
        {
            $tmp=array();
            $tmp['optionId']=$option[$i]->optionId;
            $tmp['option']=$option[$i]->option;
            $tmp['percentageVote']=$votepercentage/$total*100;
            $toJson[]=$tmp;

        }

それから

  echo CJSON::encode(array('options'=>$toJson));
于 2013-02-04T12:49:23.183 に答える