Jump to content
Fórum Script Brasil
  • 0

Busca em array [RESOLVIDO]


EasyRider
 Share

Question

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:

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 !

Edited by EasyRider
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

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

Link to comment
Share on other sites

  • 0
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 ?

Link to comment
Share on other sites

  • 0

Supondo que isto esteja em um array chamado $lista:

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

Link to comment
Share on other sites

  • 0
Supondo que isto esteja em um array chamado $lista:

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 !

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.9k
    • Total Posts
      648.8k
×
×
  • Create New...