2016-01-11 93 views
0

我想創建如下內容的數組數據,但此時動態PHP - 的foreach創建陣列 - 被覆蓋

$taInputs = array(
    "fieldOne" => array($this->fieldOne, '0,166,198'), 
    "fieldTwo" => array($this->fieldTwo, '0,166,198'), 
    "fieldThree" => array($this->fieldThree, '0,166,198'), 
    "fieldFour" => array($this->fieldFour, '0,166,198') 
); 

所以,我創造我的數組對象

$this->data = array(); 

而且然後我有以下循環

foreach($this->document->documentData as $documentData) 
{ 
    $this->data = array(
     $documentData->key => array($documentData->value, '228,47,57') 
    ); 
} 

目前,如果我在foreach循環後輸出數據數組,我只有s即最後一個條目,因此它將在每個循環中覆蓋它。

如何在不覆蓋它的情況下創建數組?

+2

'$ this-> data [] = ....'也許? –

回答

4

您需要使用PHP的[]來設置陣列上的密鑰。

因此,改變$this->data$this->data[ $documentData->key ]

foreach($this->document->documentData as $documentData) 
{ 
    $this->data[$documentData->key] = array($documentData->value, '228,47,57'); 
} 

沒有變量,你可以手動設置它像這樣:

$this->data[ 'fieldOne' ] = array('someValue', '228,47,57'); 
$this->data[ 'fieldTwo' ] = array('someValue', '228,47,57'); 
$this->data[ 'fieldThree' ] = array('someValue', '228,47,57'); 
$this->data[ 'fieldFour' ] = array('someValue', '228,47,57'); 

然後你就可以將這些值迭代有:

foreach ($this->data as $key => $data) { 
    print "$key => $data[0], $data[1]"; 
} 

通常你會想要這樣定義它,因爲acces唱一個關鍵數字的排列是種討厭的:

$this->data[ 'fieldOne' ] = array('documentValue' => 'someValue', 'myNumber' => '228,47,57'); 

這樣就可以方便地與documentValue或mynumber的鍵訪問它:

echo $this->data['fieldOne']['documentValue']; 
echo $this->data['fieldOne']['myNumber']; 
+0

完美,謝謝 –

2

你也可以這樣做

foreach($this->document->documentData as $documentData) 
{ 
    $this->data[$documentData->key] = array($documentData->value, '228,47,57');  

}