Diferença entre Array_Search, In_array e Array_key_exists


Está confuso entre as funções do PHP Array_Search, In_array e Array_key_exists? Fique tranquilo que neste artigo vou te mostrar qual é o objetivo de cada uma destas funções e como usá-las de forma correta.

Cada uma destas funções faz uma coisa diferente ou retorna uma coisa diferente. A seguir veremos cada uma delas.

Diferença entre Array_Search, In_array e Array_key_exists

Para que serve a função array_search do PHP

Array_Search serve para você encontrar o índice de um dado valor em um dado array. A função requer no mínimo os dois primeiros parâmetros, onde o primeiro é o valor que se quer buscar, o segundo é o array a ser buscado e o terceiro (opcional) é um booleano que define se é para verificar também os tipos de dados (o padrão é não verificar os tipos de dados).

Veja um exemplo com a função array_search

1
2
3
4
5
6
$frutas = array("Mamão", "Melão", "Banana");
 
$indice_de_banana = array_search("Banana", $frutas);
 
 
echo $frutas[$indice_de_banana] ." está no índice " . $indice_de_banana;
$frutas = array("Mamão", "Melão", "Banana");

$indice_de_banana = array_search("Banana", $frutas);


echo $frutas[$indice_de_banana] ." está no índice " . $indice_de_banana;

A saída será:

Banana está no índice 2

Quando um array possui dois elementos com o mesmo valor, e vocÊ busca tal valor com array_search, o índice do primeiro elemento que case com a busca é retornado.

Para que serve a função in_array do PHP

Parecido com array_search, in_array faz uma busca por um valor em um dado array. A diferença é que in_array invés do índice do elemento, retorna true ou false. No caso, true caso valor seja encontrado e false caso contrário. Veja um exemplo com in_array:

1
2
3
4
5
6
7
8
9
10
11
$frutas = array("Mamão", "Melão", "Banana", "Banana");
 
if(in_array("Banana",$frutas)){
    
    echo "Banana está no array";
 
}else{
    
    echo "Banana não está no array";
    
}
$frutas = array("Mamão", "Melão", "Banana", "Banana");

if(in_array("Banana",$frutas)){
	
	echo "Banana está no array";

}else{
	
	echo "Banana não está no array";
	
}

Saída:

Banana está no array

In_array também permite um terceiro parâmetro (opcional) que é um booleano que define se é para verificar o tipo de dado ou não, o padrão é não verificar.

Para que serve a função Array_key_exists do PHP

array_key_exists faz o mesmo que a função in_array, só que faz a busca por um key (chave) e não por um valor. Por exemplo , se tivermos um array com os keys fruta1, fruta2, fruta3 e quisermos saber se o key fruta3 existe, usaríamos o array_key_exists desta forma:

1
2
3
4
5
6
7
8
9
10
11
$frutas = array("fruta1"=>"Mamão", "fruta2"=>"Melão", "fruta3"=>"Banana");
 
if(array_key_exists("fruta3",$frutas)){
    
    echo "Key fruta3 existe e possui o valor " . $frutas['fruta3'];
    
}else{
    
    echo "Key fruta3 não existe";  
    
}
$frutas = array("fruta1"=>"Mamão", "fruta2"=>"Melão", "fruta3"=>"Banana");

if(array_key_exists("fruta3",$frutas)){
	
	echo "Key fruta3 existe e possui o valor " . $frutas['fruta3'];
	
}else{
	
	echo "Key fruta3 não existe";	
	
}

A saída será:

Key fruta3 existe e possui o valor Banana

Como retornar todos os keys onde um valor for encontrado

Como dito antes, a função array_search só retorna o primeiro índice do elemento onde o valor for encontrado. Caso você queria obter todas as chaves de um array onde um dado valor for encontrado, deverá usar a função array_keys. Veja o exemplo abaixo:

1
2
3
4
5
6
7
8
9
$frutas = array("fruta1"=>"Mamão", "fruta2"=>"Melão", "fruta3"=>"Banana", "fruta4"=>"Banana");
 
$indices_banana = array_keys($frutas,"Banana");
 
echo "<pre>";
 
print_r($indices_banana);
 
echo "<pre>";
$frutas = array("fruta1"=>"Mamão", "fruta2"=>"Melão", "fruta3"=>"Banana", "fruta4"=>"Banana");

$indices_banana = array_keys($frutas,"Banana");

echo "<pre>";

print_r($indices_banana);

echo "<pre>";

E a saída será:

Array
(
    [0] => fruta3
    [1] => fruta4
)

Conclusão

Amigos, se ficou alguma dúvia sobre alguma destas funções: array_search, in_array, array_key_exists ou array_keys, deixe teu comentário que eu tento exclarecer.

Creio que as dicas aqui expostas vão ajudar a exclarecer algumas dúvidas sobre busca em arrays no PHP.

Fica a dica e fiquem com Deus!

Até Já!

Diferença entre Array_Search, In_array e Array_key_exists
4.6 (92.73%) 11 votes

Leave a Reply