Pregunta

Esto es un poco difícil para mí articulado, pero en PHP que puede decir algo como:

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

y si no existe un índice que nombró, se creará / asignar el valor, y si hay un índice, se sobrescribirá el valor existente.

Compare esto con Javascript, donde hoy he tenido que hacer comprobaciones de este modo:

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

Sé que esto puede ser un poco de un punto delicado, pero hay un nombre para la capacidad de PHP (y muchos otros idiomas) para hacer estas comprobaciones por su cuenta en lugar de la más prolija (léase: PITA) Método de Javascript?

Editar

confundí a mí mismo al hacer esta. Digamos que usted desea agregar a esta estructura:

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

Yo tenía un problema hoy en día, donde he recibido los datos tabulares y quería ponerlo en un árbol algo así como esto mediante la construcción de un objeto.

Cuando empecé mis bucles, que tenía problemas para hacer nuevos índices como myobject['holidays'][thisVariable][date] = 4/20/2010 si el árbol no había sido construida en su mayoría a ese punto.

Voy a agarrar un ejemplo de código de mi otro ordenador si esto no está claro, lo siento por el pobre pensamiento.

¿Fue útil?

Solución

Me imagino 'auto-vivificación' http://en.wikipedia.org/wiki/Autovivification de Perl puede ser relevante, pero funciona diferente que usted describió. La página wiki tiene un resumen bien. Otros lenguajes como Ruby soportan un gancho de "acción por defecto" para las claves hash que no han sido asignados, los cuales pueden ser utilizados para auto-vivificación también.

Por ejemplo, en Ruby:


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

Otros consejos

Se equivoca. Para asignar un valor a la clave de un objeto en Javascript, que no es necesario para llevar a cabo el registro de entrada. El valor será asignado si ya existe un valor para esa tecla o no.

Piense en ello. ¿Cómo podría alguna vez obtener valores en un objeto o de hash si tenía que tener un valor allí en primer lugar?

Javascript hace exactamente lo mismo que PHP aquí: myObject [clave] = "valor" va a sobrescribir el valor existente si existe. ¿Puede decirnos por qué cree que de otro modo?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top