Ajuda - Busca - Membros - Calendário
Versão Completa: Busca em array [RESOLVIDO]
Fórum Script Brasil > Programação & Desenvolvimento > PHP
EasyRider
Amigos...

Estou trabalhando em um projeto à nível laboratório que acessa o firewall de um ambiente linux, mas, esbarrei na falta de conhecimento aqui e estou tendo dificuldades em identificar a chave e "pegar" o valor referente à ela pois, o valor nem sempre vem na mesma chave...

Eis a array:
CODE
Array (
[0] => !re
[1] => =.id=*540
[2] => =name=Joao Pedro
[3] => =target-addresses=192.168.0.10/32
[4] => =interface=all
[5] => =parent=none
[6] => =packet-marks=
[7] => =direction=both
[8] => =priority=8
[9] => =queue=default-small/default-small
[10] => =limit-at=0/0
[11] => =max-limit=2M/2M
[12] => =burst-limit=0/0
[13] => =burst-threshold=0/0
[14] => =burst-time=0s/0s
[15] => =total-queue=default-small
[16] => =invalid=false
[17] => =dynamic=false
[18] => =disabled=false    <- Termo que eu preciso identificar a chave e separar o valor
[19] => !done )


Aqui, neste caso, eu precisaria identificar o número da chave que contenha o valor "=disabled=", recuperar a chave na íntegra e depois explodir o "=disabled=" para obter o valor que eu preciso(se é true ou false).

Alguém sabe como fazer isso ?
Agradeço pela ajuda !
JaguA
bem se você der echo no array[18] e ele imprimi exatamente =disabled=false

de um explode nele pondo o = como delimitador assim ele vai te trazer a palavra disabled e false
sabendo que a disabled sempre vem no primeiro indice do explode sendo assim o que você precisa é cria um If onde o indicie 0 (ou seja disabled) é = a disabled para ter certeza que não teve problema no explod e se o indice 1 que vai ser true ou false
EasyRider
QUOTE(JaguA @ 16/06/2012 - 12:00) *
bem se você der echo no array[18] e ele imprimi exatamente =disabled=false

de um explode nele pondo o = como delimitador assim ele vai te trazer a palavra disabled e false
sabendo que a disabled sempre vem no primeiro indice do explode sendo assim o que você precisa é cria um If onde o indicie 0 (ou seja disabled) é = a disabled para ter certeza que não teve problema no explod e se o indice 1 que vai ser true ou false


Pois é, amigo... se fosse "linear" seria simples assim como você falou... mas, os resultados(pelo menos os últimos da lista) são DINÂMICOS dependendo da quantidade de informação que está na tabela do firewall...

O valor "=disabled=" em alguns clientes vem na chave [16], outros, [17] e alguns casos, até bem mais que isso...

Logo, eu preciso PROCURAR em qual chave está o valor "=disabled=", quando eu o achar, preciso identificá-lo... tipo: Ahh... o disabled tá na chave 17(ou 16, ou 21... enfim) pra depois eu explodi-lo...

Capitche ?
ESerra
Supondo que isto esteja em um array chamado $lista:

CODE
foreach($lista as $ind=>$val){
    if(strstr($val,'=disabled=')){
        $dados = explode('=', $val);
        break;
    }
}
EasyRider
QUOTE(ESerra @ 16/06/2012 - 18:53) *
Supondo que isto esteja em um array chamado $lista:

CODE
foreach($lista as $ind=>$val){
    if(strstr($val,'=disabled=')){
        $dados = explode('=', $val);
        break;
    }
}


Perfeito, Edgar...
Funcionou redondinho...
Me livrou de uma POG bizarra que eu estava montando aqui... rs.
Estava usando o strstr, mas, ao invés de foreach, eu estava contando as chaves da array e jogando num for...

Obrigado.
Bom fim de semana !
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2013 Invision Power Services, Inc.