Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LuX_

Array com indice não numérico

Recommended Posts

Olá Pessoal, tenho um array, mas não queria por índice numérico nele. Eu sei que dá pra fazer isso.

Se não me engano o objeto recordset é um array não é?

 

se eu chamo um objeto rs paras ser o recordset de uma consulta ao banco e eu fizer rs("codigo") significa que o rs é um array e "codigo" é o indice dele, quem tem um valor.

 

Eu precisava fazer isso.

 

meuarray("codigo") = 2

 

Porém não sei como declarar um array assim.

Não sei como redimensioná-lo sem perder os valores.

 

Gostaria que alguém me desse essa força.

Obrigado e bom fim de semana à todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que com um simples array não tem como fazer isso.

 

Pra redimensionar sem perder o valor você tem que usar Preserve.

redim preserve var

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que com um simples array não tem como fazer isso.

 

Pra redimensionar sem perder o valor você tem que usar Preserve.

redim preserve var

Se não dá com um simples array, como que faz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ReDim ArrayGloballocal(0) 'coloca ele com zero possições 
Dim numero_de_registros 'variavel auxiliar para verificação de tamanho do 
vetor 

'chama a sub 
adicionaValor("bruno") 

'qual é valor do array atual 
numero_de_registros = UBound(ArrayGloballocal) 

'imprime na tela 
For i = 1 To numero_de_registros 
response.write "Posição(" & i & "):" & ArrayGloballocal(i) & "</br>" 
Next 


'script/sub no qual você pediu 
Sub adicionaValor(valor) 
'aumenta mais um espaço para você adicionar o valor 
redim ArrayGloballocal(Ubound(ArrayGloballocal)+1) 
ArrayGloballocal(Ubound(ArrayGloballocal)) = valor 
end sub

Espero ter ajudado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Patrique não consegui encontrar nada relacionado.

Xamburzum, infelizmente isso não é suficiente.

Eu conheço o dim e o redim preserve para arrays normais.

 

mas eu queria fazer um array com índice não numérico. No PHP eu simplesmente posso fazer: $meuarray["nome"] = "LuX".

 

No asp já vi que não posso fazer meuarray("nome") = "LuX".

 

Acho que agora ficou mais claro né? obrigado pela atenção gente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz uma busca no forum, tem muito conteudo...

você tb pode usar o objeto Dictionary,para que possa parecer semelhante a matrizes, no entanto, o objeto Dictionary é uma solução mais conveniente para manipular dados relacionados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Xamburzum, acredito que você seja mais experiente do que eu.

eu estou bem perdido, olhei pelo forum e não encontrei.

você poderia me mandar um link?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O índice é basicamente a posição do elemento na matriz. Matrizes em ASP / VBScript tem uma base zero a partir do índice.

 

<%
Dim MyString, MyArray
MyString = "cigaro,alcool,sexo,futebol"
MyArray = Split(MyString,",") ' delimitador 
%>

O resultado seria uma matriz denominada MyArray com 4 elementos.

 

MyArray(0) = "cigaro"

MyArray(1) = "alcool"

MyArray(2) = "sexo"

MyArray(3) = "futebol"

Novamente loop poderia através da matriz e imprimir os valores de cada elemento da matriz. Neste exemplo, nós vamos incorporar também a função UBound.

 

<%

Dim MyString, MyArray
MyString = "cigaro,alcool,sexo,futebol"
MyArray = Split(MyString,",")
For i=0 to UBound(MyArray) 'UBound retorna 3
response.write myArray(i) & "<br>" 
Next 'passar para o próximo valor de i%>

Repare que no código acima usamos a função UBound que retorna o índice do maior elemento da matriz. Neste caso, é assim que a 3 For i loop loop de 0 a 3.

 

mostramos como criar uma matriz de tamanho fixo. O código abaixo, declara o array usando a instrução Dim e passa em um parâmetro que especifica o número máximo de itens que a matriz pode conter. Neste caso, é 7, a matriz tem um índice inicial baseada em zero.

 

<% 
Dim myArray(6)
%>

matrizes Dinamicas vêm a calhar quando você não tem certeza quantos itens irá realizar a sua matriz. Para declarar uma matriz dinâmica simplesmente deixe de fora do parâmetro.

 

<% 
Dim myArray()
%>

Suponha que você queria criar um array para armazenar todos os ID de item em seu carrinho de compras. Como você não tem certeza quantos itens vão comprar você poderia antes de tudo criar uma matriz dinâmica.

 

<%
Dim myShopCartArray()
%>

Se o visitante, em seguida, coloca 3 itens em seu carrinho você pode redimensionar a matriz usando a função de instrução (redimesionar).

 

<%
Dim myShopCartArray()

Redim myShopCartArray(2) 'Lembrar-índice com base zero
%>

Se o visitante coloca outro item no seu carrinho de compras você terá que redimensionar a matriz novamente. No entanto, você iria perder toda a informação existente na matriz, se você só usou a função ReDim. Usando as palavras-chave PRESERVE vai manter a matriz que já temos e aumentar o tamanho.

 

<%
Dim myShopCartArray()

Redim myShopCartArray(2) 'Lembrar-índice com base zero
Redim PRESERVE myShopCartArray(3) 
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza amigo. Isso eu já entendi, mas ainda tem aquele esquema de poder fazer arrays com o índice não numérico.

É possível fazer isso em ASP?

 

como já devo ter explicitado, algo assim:

 

candidato("nome") = "LuX"

candidato("idade") = 18

e assim por diante...

 

obrigado pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta usar o Dictionary que o xanburzum falou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

para armazenar valores em objeto de dicionário e acessá-los via Arrays,uma comparacao Dicionários e Arrays:

 

• As chaves são usadas para identificar os itens em um objeto Dictionary

• Você não precisa chamar ReDim para alterar o tamanho do objeto Dicionário

• Ao excluir um item de um dicionário, os demais itens serão automaticamente shift up

• Dicionários tem mais funções embutidas de Arrays

• Dicionários de trabalha melhor do que matrizes de acessar elementos aleatórios com freqüência

• Dicionários de trabalha melhor do que matrizes para localizar itens por seu conteúdo

O exemplo a seguir cria um objeto Dictionary, acrescenta alguns pares chave / item para ele, e recupera o valor do item para o key gr:

 

<%
Dim d
Set d=Server.CreateObject("Scripting.Dictionary")
d.Add "re","Red"
d.Add "gr","Green"
d.Add "bl","Blue"
d.Add "pi","Pink"
Response.Write("O valor da chave é: " & d.Item("gr"))
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Scripting.Dictionary basicamente é o que o RecordSet faz, basta criar uma função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como citei acima, Scripting.Dictionary pode solucionar seu problema , ele armazena valores em objeto de dicionário e acessá-los via Arrays,uma comparacao Dicionários e Arrays

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu galera, vou testar!

Acho que o dictionary vai me ajudar!

valeu hein!

Depois posto o resultado!

 

Obrigado novamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.