2010-07-08 4 views
0

J'ai un objet, et j'ai une nouvelle valeur que j'ai besoin d'ajouter à cet objet, mais pas seulement à la fin, cela ne poserait aucun problème . Ce que je dois faire est d'ajouter cette valeur à un nouveau noeud sur un index spécifique.Ajouter un nœud enfant à un index spécifique dans un objet avec php

Ok, donc voici l'objet. Ensuite, j'ai cette cinquième valeur que j'ai maintenant besoin d'ajouter à l'index 1, ou comme il est nommé dans cet exemple "b". Comme ça.

[object]=>{ 
    ["a"]=> "value" 
    ["e"]=> "fifth value" 
    ["b"]=> "value" 
    ["c"]=> "value" 
    ["d"]=> "value" 
} 

La question reste, est-il une façon intelligente de faire ceci ou dois-je les séparer et de les rendre dans les tableaux et les fusionner sous forme de tableaux les affecter ensuite à un nouvel objet indiquant explicitement être un objet?

Comme ceci. Je pense qu'il doit y avoir une meilleure façon de gérer cela, avec seulement des objets.

Nous vous remercions de votre temps.

Répondre

1

Les objets n'ont tout simplement pas d'index, ils ont des propriétés, et $ obj-> property est toujours $ obj-> property - pas d'ordre, pas d'index rien de tel. Ce dont vous avez besoin ici est (généralement) un tableau numériquement indexé, pas un objet, et non un tableau associatif - si vous insistez pour avoir besoin d'un tableau associatif alpha (clés alpha plutôt que numériques), vous pouvez utiliser ksort pour gérer ce problème particulier.

$array = array( 
    "a" => "value", 
    "e" => "fifth value", 
    "b" => "value", 
    "c" => "value", 
    "d" => "value", 
); 
ksort($array); 
print_r($array); 

note vous pouvez toujours le faire tourner dans un objet si pour une raison quelconque, vous avez besoin de ce en faisant $ obj = (objet) $ array; après le tri

+0

ksort n'aidera pas, car ils ne sont pas classés par ordre alphabétique, les propriétés. Je les ai juste fait comme ça dans mon exemple.Mais je réalise ce que tu dis à propos de l'objet qui n'a pas d'index mais de propriétés, et je pense que je vais dans le mauvais sens. Les databas renvoient un objet et je n'ai besoin que d'un petit nombre d'entre eux dans un ordre spécifique, donc je vais les transformer en tableau et envoyer les données dont j'ai besoin en tant que json, cela résoudra mon problème. Merci pour la clarification. –

2

Que faites-vous qui a besoin de cette:

[object]=>{ 
    ["a"]=> "value" 
    ["e"]=> "fifth value" 
    ["b"]=> "value" 
    ["c"]=> "value" 
    ["d"]=> "value" 
} 

être différent de ceci:

[object]=>{ 
    ["a"]=> "value" 
    ["b"]=> "value" 
    ["c"]=> "value" 
    ["d"]=> "value" 
    ["e"]=> "fifth value" 
} 

?

Si vous en avez BESOIN d'être différents, vous utilisez OOP incorrect.

EDIT: Qu'est-ce qui vous empêche d'utiliser des tableaux?

+0

Oui, je sais que je peux obtenir les valeurs de tous les index de toute façon, mais j'ai besoin qu'ils soient dans un ordre spécifique, j'ai peur. Je suis en train d'itérer sur des objets et d'imprimer les nœuds dans l'ordre. Les objets ne sont pas toujours les mêmes, donc j'essaie de gérer cela en les envoyant du serveur dans l'ordre où je les veux. Big inconvénient que je pourrais ajouter. :) –

+0

Pour répondre à votre modification. J'envoie l'objet du serveur en tant qu'objet json. Il n'y a donc aucune raison pour laquelle je ne puisse pas extraire les données dont j'ai besoin de la base de données, puis les placer dans un tableau dans l'ordre que je veux, puis envoyer ce tableau en tant qu'objet json. Je pensais juste qu'il y aurait un moyen d'ajouter un nœud d'objet à l'endroit où je voulais. Vous avez peut-être raison, ce n'est pas un bon moyen de le faire, peut-être que je serais mieux avec des tableaux et les envoyer comme json à la place. –

Questions connexes