Você está aqui: Home / programacao / php / trabalhando com array no php aula 02 fazendo buscas em arrays.html

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.

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>