Question

Ceci est un peu difficile pour moi d'articuler, mais en PHP, vous pouvez dire quelque chose comme:

$myArray['someindex'] = "my string";

et s'il n'y a pas d'index nommé que, il va créer / affecter la valeur, et s'il y a un index, il remplacera la valeur existante.

Comparez cela à Javascript où aujourd'hui je devais faire des vérifications comme ceci:

if (!myObject[key]) myObject[key] = "value";

Je sais que cela peut être un peu d'un point difficile, mais est-il un nom pour la capacité de PHP (et beaucoup d'autres langues) de faire ces contrôles eux-mêmes, par opposition à plus bavard (lire: PITA) Méthode de Javascript?

EDIT

Je me confus à demander cela. Disons que vous voulez ajouter à cette structure:

myobject = {
    holidays : {easter : {date : 4/20/2010,
                          religion : Christianity}
                holi : {date : 3/10/2010,
                        religion : hindu} 
}

J'ai eu un problème aujourd'hui où j'ai reçu des données tabulaires et je voulais le mettre dans un arbre peu comme en construisant un objet.

Quand j'ai commencé mes boucles, j'ai eu du mal à faire des indices de nouveau comme myobject['holidays'][thisVariable][date] = 4/20/2010 si l'arbre n'a pas été construite en grande partie à ce moment-là.

Je vais prendre un exemple de code de mon autre ordinateur si ce n'est pas clair, désolé pour la pensée pauvre.

Était-ce utile?

La solution

Je suppose que 'auto-vivification' http://en.wikipedia.org/wiki/Autovivification de Perl peut être pertinent, mais il fonctionne différent de celui que vous avez décrit. La page wiki a un bon résumé. D'autres langues comme Ruby prennent en charge un crochet « l'action par défaut » pour les clés de hachage qui ne sont pas affectées, qui peuvent être utilisés pour l'auto-vivification ainsi.

Par exemple, dans Ruby:


>> h = Hash.new {|h,k| h[k] = {}}
=> {}
>> h["hello"]["world"] = 20
=> 20
>> h["hello"]["world"]
=> 20

Autres conseils

Vous vous trompez. Pour attribuer en javascript, une valeur à la clé d'un objet que vous n'avez pas besoin d'effectuer cette vérification. La valeur sera attribuée s'il y a déjà une valeur pour cette clé ou non.

Pensez-y. Comment pourriez-vous jamais obtenir des valeurs dans un objet ou hachage si vous deviez avoir une valeur là d'abord?

Javascript fait exactement la même chose que PHP ici: myObject [key] = « valeur » remplacera la valeur existante si l'on existe. Pouvez-vous nous dire pourquoi vous pensez autrement?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top