2017-10-19 98 views
-1

我想擴展一個assoc數組。 原始陣列是像擴展assoc數組

$arr = [[ 
    'ID'  => 0, 
    'TEXT' => SOME_CONST, 
    'CHECKED' => $opt_flag, 
]]; 

隨着新的條件我想延長這個現有的陣列。

if (defined('MODULE_STATUS') && MODULE_STATUS == 'true') { 
    $arr['JSON_ATTRDATA'] = 1; 
} 

結果是

Array 
(
    [0] => Array 
     (
      [ID] => 0 
      [TEXT] => text 
      [CHECKED] => 1 
     ) 

    [JSON_ATTRDATA] => 1 
) 

什麼是錯的,新的關鍵是nestet陣列之外?你想$arr[0]['JSON_ATTRDATA'] = 1;現在你追加到父陣列

+0

你想$常用3 [0] [ 'JSON_ATTRDATA'] = 1; – madalinivascu

+0

包含這些值的數組是一個在索引爲0的'$ arr'的子數組,因此您需要將新鍵分配給'$ arr [0] ['JSON_ATTRDATA']' – Mohammad

+1

它位於嵌套數組之外,因爲你將它插入到嵌套數組之外。如果您對此不清楚,我強烈建議重新閱讀PHP手冊,瞭解陣列的工作方式。 – Gordon

回答

0

已經具有陣列$arr 1個對象

其指數

改變這個對象值的子陣列
$arr[0] = "anything else" 

,並添加更多的對象

$arr[] = "Another object"; 

你應該叫:

$arr[0]['JSON_ATTRDATA'] = 1; 

將另一key => value添加到第一對象

0

$arr[0]['JSON_ATTRDATA']

詳情

$arr包含數組中的數組。像這樣

Array 
(
    [0] => Array 
     (
      [ID] => 0 
      [TEXT] => text 
      [CHECKED] => 1 
     ) 
) 

所以當你添加$arr['JSON_ATTRDATA']其添加到第一陣列