PHP - 无法将对象添加到数组中

时间:2015-12-19 00:52:42

标签: php arrays class

我创建了一个简单的类:

class Event {


   var $a;
   var $b;
   var $c;


   function __construct($a, $b, $c) 
   {
      $this->a= $a;
      $this->b = $b;
      $this->c= $c;
   }



  } 

然后我创建了另一个扩展Thread的类:

class WorkerThread extends Thread
{
    private $myUrl;
    private $eventsArr;
    private $counterDebug;
    private $postdata;

    public function __construct($myUrl, $postdata)
    {
        $this->myUrl = $myUrl;
        $this->postdata = $postdata;
        $this->eventsArr = array();
        $this->counterDebug=0;
    }

    public function run()
    {
          $flag=false;

          foreach ($json as $key => $value) {


                    $this->counterDebug++;
                    /* Death event */
                    $event= new Event($a, $b, $c);
                    array_push($this->eventsArr, $event);

                }
              }

            }
          }
          echo (count($this->eventsArr));
          echo (json_encode($event));
          echo ("\n" . $this->counterDebug);

    if($flag && count($this->events)>0){
    ...

尝试将新创建的对象添加到数组中时,它保持为空。

我从调试中得到的结论:

1)创建对象。

2)eventsArr [] = $ event,array_push都没有工作。

3)我设置了一个计数器,用于验证正在创建的对象,并应添加到数组中。

我做错了什么?

P.S -

为了简化操作,我删除了不相关的部分代码。

1 个答案:

答案 0 :(得分:2)

我认为您应该创建包含所有事件的临时数组,然后将其提供给$ eventsArr。

$temp = array();
foreach ($json as $key => $value) {
    $this->counterDebug++;
    /* Death event */
    $event= new Event($a, $b, $c);
    $temp[] = $event;
}
$this->eventsArr = $temp;

foreach ($json as $key => $value) {
    $this->counterDebug++;
    /* Death event */
    $event= new Event($a, $b, $c);
    $this->eventsArr[] = $event;
}