2016-12-19 118 views
1

我試圖在關聯數組中添加一個鍵值對到關聯數組中的「文件」鍵,如下所示,但它將該鍵的範圍之外的鍵值對。關聯數組PHP操作

{ 
    "files": [ 
    { 
     "name": "abc.pdf", 
     "size": 17915, 
     "type": "application/pdf", 
     "action": "NIL" 
    } 
    ], 
    "filesize": 17344 
} 

我希望它下面

{ 
    "files": [ 
    { 
     "name": "abc.pdf", 
     "size": 17915, 
     "type": "application/pdf", 
     "action": "NIL", 
     "filesize": 17344 
    } 
    ] 
} 

按規定我曾嘗試以下,但沒有工作。根據要求

1. $data['filesize'] = $filesize; // appends as shown above 
2. $data['files']['filesize'] = $filesize;// 

編輯,在執行console.log輸出():

Object {files: Array[1]} 
    files: Array[1] 
     0:Object 
      name: "abc.pdf" 
      size: "1795" 
      type:"application/pdf" 
      action: "NIL" 
     proto: Object 
     length:1 
__proto__:Array[0] 
__proto__:Object 

回答

1

$data['files']是一個數組,其中第一個元素是另一個數組(這是您要更改陣列) 。

試試這個:

$data['files'][0]['filesize'] = $data['filesize']; 

如果你想完全地消除了filesize$data你可以取消它:

unset($data['filesize']); 
+0

正確的答案,我可以補充一點,如果你想使用一個' foreach'你可以做'foreach($ data ['files']作爲$ key => $ array)$ array ['filesize'] = $ filesize;' – matiaslauriti

+0

謝謝我已經嘗試了上面的但得到PHP致命錯誤:無法使用stdClass類型的對象作爲數組...在搜索後,我意識到我正在將一個對象當作一個數組Ÿ我將您的行更改爲data-> files [0] - > filesize = $ filesize;但現在我打印對象時甚至沒有看到文件大小。 – fanbondi

+0

在對象上使用'var_dump'並用數據更新問題。 – Dekel