class Field extends Thread{
public $dataFields;
public function addValue($table,$key,$data){
print_r($this->dataFields[$table]);
echo "'ndata: ".$data."'n";
if(isset($this->dataFields[$table][$key])){
$this->dataFields[$table][$key]= $data;
echo "yes'n";
}
else echo "no'n";
print_r($this->dataFields[$table]);
}
public function setVariables($con){
$result = mysqli_query($con,"select * from property,city limit 1");
$row=mysqli_fetch_fields($result);
foreach ($row as $key => $value) {
$propData[$value->table][$value->name]="";
}
$propData["property"]["portalId"]=2;
$propData["property"]["area"]="delhi";
$this->dataFields=$propData;
$this->addValue("property","id","1");
//print_r($this->dataFields);
$this->dataFields["property"]["id"]=1;
var_dump($propData);
var_dump($this->dataFields);
}
}
如您所见,我正在通过函数addValue更新数组的值的代码,如果在dataFields数组中设置了键,那么它将得到更新,但是当我尝试调用函数时,它不会发生:
addValue("property","id","1"(; 通过函数 setVariables(((见下面的输出(
它打印的值$data打印"是"。类变量 dataFields 未更新。
[编辑]当我使用线程扩展类时,它不会更新,但是当我不使用线程扩展类时,它会更新。
Array
(
[id] =>
[portalId] => 2
[area] => delhi
)
data: 1
yes
Array
(
[id] =>
[portalId] => 2
[area] => delhi
)
array(2) {
["city"]=>
array(3) {
["id"]=>
string(0) ""
["name"]=>
string(0) ""
["otherNames"]=>
string(0) ""
}
["property"]=>
array(3) {
["id"]=>
string(0) ""
["portalId"]=>
int(2)
["area"]=>
string(5) "delhi"
}
}
array(2) {
["city"]=>
array(3) {
["id"]=>
string(0) ""
["name"]=>
string(0) ""
["otherNames"]=>
string(0) ""
}
["property"]=>
array(3) {
["id"]=>
string(0) ""
["portalId"]=>
int(2)
["area"]=>
string(5) "delhi"
}
}
我可以在 5.6.3 中确认以下工作:
class Field {
public $dataFields;
public function addValue($table,$key,$data){
print_r($this->dataFields[$table]);
echo "'ndata: ".$data."'n";
if(isset($this->dataFields[$table][$key])){
$this->dataFields[$table][$key]= $data;
echo "yes'n";
}
else echo "no'n";
print_r($this->dataFields[$table]);
}
public function setVariables(){
$propData["property"]["id"] = '';
$propData["property"]["portalId"]=2;
$propData["property"]["area"]="delhi";
$this->dataFields=$propData;
$this->addValue("property","id","1");
//print_r($this->dataFields);
}
}
$field = new Field;
$field->setVariables();
带输出:
Array
(
[id] =>
[portalId] => 2
[area] => delhi
)
data: 1
yes
Array
(
[id] => 1
[portalId] => 2
[area] => delhi
)
我建议重新安装最新版本的 PHP。