Trabalhando com Array no PHP Aula 02 – Fazendo buscas em arrays
As vezes é necessário sabermos se um array contém um determinado valor que procuramos, para isso o PHP nos oferece a função array_search().
A função array_search() possui três parâmetros sendo que os dois primeiros são obrigatórios e o último é opcional. Bem vamos entender o que é cada um, o primeiro parâmetro é a string ou valor que você deseja procurar no array, o segundo é o próprio array que onde será feita a busca, já o terceiro parâmetro é um booleano, que representa se é pra considerar os tipos dos dados buscados, caso setado e você fizer uma busca por “2″, mesmo o array contendo um número 2 retornará false.
O retorno da função array_search() é a posição do valor buscado no array, caso ele contenha esse valor, ou false caso o valor não seja encontrado.
Veja esse exemplo:
$vertebrados = array("cachorro","gato","homem");
if(array_search("homem",$vertebrados)!==false){
echo "homens são vertebrados";
}else{
echo "homens não são vertebrados";
}
Reparou que utilizei o operador !== ? Fiz isso porque o operador != não confere o tipo e vai entender 0 como false, e 0 é uma possível posição de retorno da função array_search(). Caso queira conferir se o valor é false utilize o operador === pelo mesmo motivo.
Agora, ainda existe um porém, essa função é case sensitive ou seja, diferencia letras maiúsculas de minúsculas. Imagine por exemplo que você passe um valor para a busca acima como esse “CachOrRo”, isso retornará falso.
Para resolver essa questão eu criei minha própria função, veja:
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;
}
if(array_searchi("CachOrRo",$vertebrados)!==false){
echo "Cães são vertebrados";
}else{
echo "Cães não são vertebrados";
}
Você utiliza do mesmo modo que a função original, tendo também o terceiro parâmetro opcional e retornando a posição do valor procurado no array ou falso em caso de valor não encontrado. O i no final é de insensitive, tudo tem uma lógica né, rs.
Bom ta ai, espero que gostem.






