2016-12-19 2 views
1

J'essaie d'ajouter une paire de valeurs de clé à la clé "files" dans un tableau associatif comme indiqué ci-dessous mais elle prend la paire clé-valeur en dehors de la portée de cette clé.Matrice associative PHP manipulation

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

Je veux comme indiqué ci-dessous

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

J'ai essayé ce qui suit, mais aucun fonctionne.

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

Modifier comme demandé, sortie en 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 

Répondre

1

Votre $data['files'] est un tableau, où le premier élément est un autre tableau (ce qui est le tableau que vous voulez changer) .

Essayez ceci:

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

Si vous souhaitez supprimer complètement le filesize dans $data vous pouvez la désélectionner:

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

Bonne réponse, et je peux ajouter que si vous voulez utiliser un ' foreach' vous pouvez faire 'foreach ($ data ['fichiers'] comme $ key => $ array) $ array ['filesize'] = $ filesize;' – matiaslauriti

+0

merci j'ai essayé ci-dessus mais en obtenant PHP Erreur irrécupérable: Impossible d'utiliser objet de type stdClass comme tableau ... Après avoir cherché, j'ai réalisé que je traitais un objet comme un arra y J'ai changé votre ligne en données-> fichiers [0] -> filesize = $ filesize; mais maintenant je ne vois même pas la taille du fichier lorsque j'imprime l'objet. – fanbondi

+0

Utilisez 'var_dump' sur l'objet et mettez à jour la question avec les données. – Dekel