2016-12-19 90 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