Ir para conteúdo

POWERED BY:

Arquivado

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

Beatriz Biah

strlower, array e case sensitive

Recommended Posts

Boa tarde pessoal. Estou aprendendo um pouco de PHP. Na apostila que estou estudando o autor (Anderson M) faz uma função para resolver o problema de case sensitive para retornar um valor buscado em um array. Como também estou no primeiro semestre de faculdade e tenho pouco conteúdo (por isso tenham paciência comigo rsrs), não estou entendo como funciona esta função criada, principalmente o que $needle, $haystack, $check_type e $i estão fazendo. E pesquisei sobre "strlower" que diz "converte uma string para minusculas" quer dizer que buscar por "CAchoRRo" vai converter tudo em minusculas pra ficar igual da array?

Obrigada.

 

 

<?php
function array_searchi($needle, $haystack, $check_type=false){
for($i=0;$i<count($haystack);$i++){
if($check_type){
if(strtolower($haystack[$i])===strtolower($needle)) return $i;
}else{
if(strtolower($haystack[$i])==strtolower($needle)) return $i;
}
}
return false;
}
$vertebrados = array ("cachorro", "gato", "homem");
if(array_searchi("CachOrRo",$vertebrados)!==false){
echo "Cães são vertebrados";
}else{
echo "Cães não são vertebrados";
}
?>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou postar novamente o código com alguns comentários.

$needle, $haystack e $check_type são os parâmetros do método/função.

 

<?php
///$needle, $haystack e $check_type são os parâmetros da função/método
function array_searchi($needle, $haystack, $check_type=false){


//$i inicia com o valor 0 e vai sendo incrementado($i=$i+1 é o mesmo que $++)
   for($i=0;$i<count($haystack);$i++){
//se $check_type for true(verdadeiro) , no caso não é
      if($check_type){
// ==== checa se é igual e do mesmo tipo
//return retorna o valor de $i e não prossegue com a aplicação
         if(strtolower($haystack[$i])===strtolower($needle)) return $i;
//entao cai no else
         }else{
// == checa se é igual, não compara o tipo(acho desnecessário usar pra strings)
//return retorna o valor de $i e não prossegue com a aplicação
         if(strtolower($haystack[$i])==strtolower($needle)) return $i;
      }
   }


   return false;
}

Roda esse exemplo talvez você entenda melhor (clique em RUN)

http://runnable.com/me/VVzqCc_bgUEcia7x

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se me permite a intromissão... vou desmembrar um pouco mais ainda a dica e o script que o Marcos Xavier mandou...

 

Antes de qualquer coisa:

 

  • strtolower(); transforma todos os caracteres enviados para minúsculo. Ex.:
    $string = "MEU NoMe É DiEGO";
    $lower = strtlower($string);
    echo $string;
    echo "<br />";
    echo $lower;
    /*
    IRÁ IMPRIMIR:
    
    MEU NoMe É DiEGO
    meu nome é diego
    */
    

    O oposto pode ser feito com strtoupper();

 

 

Nesse trecho de código que o Marcos Xavier postou, você tem as seguintes funções:

  1. function array_searchi($needle, $haystack, $check_type=false)
    function define que uma função está sendo criada. A´pós isto, escreve-se o NOME da função: array_searchi. Dentro dos parênteses, você define os parâmetros que devem ser enviados junto ao chamado da função.
    OBS: você pode definir valores padrão para os parâmetros dessa forma: $check_type=false.
  2. for é um LOOP que vai repetir a regra definida X vezes, seguindo o padrão abaixo:
    for(número inicial -> expressão 1 -> "para este número"; regra de repetição -> expressão 2 -> "enquanto o número inicial for maior ou menor do que esse"; regra de acréscimo ao número inicial -> expressão 3 -> "faça isto a cada vez que o loop chegar ao 'fim'"){
    //   O código a ser executado
    }
    
  3. haystack normalmente se refere (em php) ao ARRAY ou STRING que deverá ser CONSULTADO(A).

  4. needle normalmente se refere (em php) ao VALOR que deverá ser BUSCADO em HAYSTACK.

  5. $i é como os desenvolvedores costumam fazer a parametrização de seus loops. Por se tratar de apenas uma letra, de fácil escrita, é comumente utilizada nos Loops, principalmente no FOR, pela necessidade de se repetir a escrita dessa string diversas vezes dentro de cada Loop. Resumo: é necessário ficar digitando várias vezes o nome da mesma variável dentro do Loop, então utilize um nome fácil de rápido de ser digitado e lembrado posteriormente para facilitar sua vida.

Agora veja o código abaixo.

$vertebrados = array ("cachorro", "gato", "homem");
 
if(array_searchi("CachOrRo",$vertebrados)!==false){
   echo "Cães são vertebrados";
 
}else{
 
   echo "Cães não são vertebrados";
}

O if pesquisa se o animal é ou não vertebrado. No entanto, se eu digitasse "CachOrRo", ele não iria achar esse valor dentro do meu array, porque ele é CaseSensitive (diferencia maiúsculas de minúsculas). Por isso utilizamos o strtolower: convertemos todos os caracteres pesquisados em minúsculos e pronto, agora você consegue achar o valor dentro do array e verificar se o animal é vertebrado ou não.

 

OBS: O php,net é uma excelente fonte de informações sobre as funções do PHP. Eu particularmente prefiro o W3Schools, mas precisa de inglês pelo menos básico (tipo o meu rsrs). Fora isso, é uma fonte de estudos maravilhosa! Muita coisa que aprendi foi por esses dois links. Podem ser muito úteis na hora do aperto.

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.