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更新數組值的代碼,如果密鑰的數據域數組中的設置,那麼它會被更新,但在更新的PHP類數組值當我嘗試調用該函數時,這不會發生:如何同時使用並行線程
addValue(「property」,「id」,「1」);通過函數setVariables() (參見下面的輸出)
它打印$ data的值,它打印「yes」。 類變量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"
}
}
請向我們展示您的輸入,準確輸出和您的預期輸出。 (適用於我)同時向我們展示您的**完整**代碼 – Rizier123 2015-02-06 23:22:00
爲什麼輸出:'data:DEFAULT'而不是'data:1'?請向我們展示完整代碼 – Rizier123 2015-02-06 23:35:52
對不起,我複製了不同測試用例的輸出,我現在已經更正了它! – 2015-02-06 23:38:43