Pergunta

Isso é um pouco difícil para eu articular, mas no PHP você pode dizer algo como:

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

E se não houver Índice, ele criará/atribuirá o valor e, se houver um índice, ele substituirá o valor existente.

Compare isso com JavaScript, onde hoje tive que fazer cheques como:

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

Eu sei que isso pode ser um ponto um pouco exigente, mas existe um nome para a capacidade do PHP (e muitos outros idiomas) de fazer essas verificações por conta própria, em oposição ao método mais detalhado (leia -se: pita) de JavaScript?

EDITAR

Eu me confundi em perguntar isso. Digamos que você queira adicionar a esta estrutura:

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

Hoje tive um problema em que recebi dados tabulares e queria colocá -los em uma árvore assim, construindo um objeto.

Quando comecei meus loops, tive problemas para fazer novos índices como myobject['holidays'][thisVariable][date] = 4/20/2010 Se a árvore não tivesse sido construída principalmente até aquele momento.

Vou pegar uma amostra de código do meu outro computador, se isso não estiver claro, desculpe o pensamento ruim.

Foi útil?

Solução

Eu acho que 'Auto-Vivificação' http://en.wikipedia.org/wiki/autovivification da Perl pode ser relevante, mas funciona diferente da que você descreveu. A página do Wiki tem um bom resumo. Outros idiomas, como o Ruby, suportam um gancho de "ação padrão" para as teclas de hash que não foram atribuídas, que também podem ser usadas para a vitificação automática.

Por exemplo, em Ruby:


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

Outras dicas

Você está enganado. Para atribuir um valor à chave de um objeto no JavaScript, você não precisa executar essa verificação. O valor será atribuído se já existe um valor para essa chave ou não.

Pense nisso. Como você poderia obter valores em um objeto ou hash se você tivesse que ter um valor lá primeiro?

O JavaScript faz exatamente a mesma coisa que PHP aqui: MyObject [key] = "value" substituirá o valor existente se houver. Você pode nos dizer por que pensa o contrário?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top