如何获得计数变量的输出?

时间:2016-01-12 06:19:48

标签: php

<?php
$count=0;

class My extends Thread
{
     private $myid;

    //  ini_set('max_execution_time', 0);
    //echo date("Y-m-d H:i:s")."<br/>";

    public function __construct($id)
    {
        $this->myid = $id;
    }

    public function run()
    {

    for($t=0;$j+$t<=100;$t+=10){ //future  buy
        for($k=0;$j+$t+$k<=100;$k+=10){//future sell
            for($l=1;$l<=14;$l++){ // strike
                for($m=0;$j+$k+$m<=300;$m+=10){ //put buy
                    for($n=1;$n<=14;$n++){ // strike
                        for($o=0;$o<=300;$o+=10){ // call buy
                            for($p=1;$p<=14;$p++){ //strike
                                if($p==$l)
                                    continue;                               
                                for($q=0;$q<=300;$q+=10){ // put sell
                                    for($r=1;$r<=14;$r++){ // strike
                                        if($r==$n)
                                            continue;
                                        for($s=0;$s<=300;$s+=10){ // call buy
                                            $count ++;
                                        }
                                    }
                                }
                            }
                        }                   
                    }
                }
            }
            }
        }   
    }

}
echo date("Y-m-d H:i:s")."<br/>";

    $mycalls = [];
    for($i=0;$i<=100;$i+=10)
    {
        $mycalls[$i]= new My($i);
        $mycalls[$i]->start();
        $mycalls[$i]->join();
    }

    echo date("Y-m-d H:i:s")."<br/>";
    echo "<br>";
    echo $count;


?>

2 个答案:

答案 0 :(得分:0)

My class的调用run方法。它应该是return $ count或echo $ count。

答案 1 :(得分:0)

我不确定我完全理解你的意思&#34;如何获得计数变量&#34;的输出,但我发现可能会出现一些问题。

1)$ count是一个全局变量,而不是一个类或一个方法变量,简单地在run方法中向count添加1将不会对类定义之外的$ count进行任何更改。

2)我没有看到任何更新$ count的run方法(尽管它在类外)的变量被调用。

3)即使run方法在某个地方调用,你也必须在run方法的开头添加一行global $ count。

4)我建议你在课堂内部存储$ count并使用函数返回它,这意味着该类看起来像这样:

Class My extends Thread{
    protected $count = 0;
    public function run(){
        //...
        $this -> count++;
        //...
    }

    public function getCount(){
        return $this -> count();
    }
}

然后从类实例中获取计数值:

$myInstance = new My();
$myInstance -> run();
$someCount = $myInstance -> getCount();

由于您正在创建我的101个实例,因此代码看起来像这样:

$mycalls = [];
$count = 0;
for($i=0;$i<=100;$i+=10)
{
    $mycalls[$i]= new My($i);
    $mycalls[$i]->start();
    $mycalls[$i]->join();
    $count += $mycalls[$i] -> getCount();
}
echo $count;