我创建了一个简单的类:
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 -
为了简化操作,我删除了不相关的部分代码。
答案 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;
}