É possível ter um array com chaves idênticas? O segundo valor não substituiria o original?
Citricguy
47
Usando:in_array()
$search_array = array('user_from','lucky_draw_id','prize_id');if(in_array('prize_id', $search_array)){
echo "The 'prize_id' element is in the array";}
Aqui está o resultado:The 'prize_id' element is in the array
Usando:array_key_exists()
$search_array = array('user_from','lucky_draw_id','prize_id');if(array_key_exists('prize_id', $search_array)){
echo "The 'prize_id' element is in the array";}
Sem saída
Em conclusão, array_key_exists()não funciona com um array simples. É apenas para descobrir se existe ou não uma chave de array. Use em seu in_array()lugar.
Aqui está mais um exemplo:
<?php
/**++++++++++++++++++++++++++++++++++++++++++++++
* 1. example with assoc array using in_array
*
* IMPORTANT NOTE: in_array is case-sensitive
* in_array — Checks if a value exists in an array
*
* DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
*++++++++++++++++++++++++++++++++++++++++++++++
*/
$something = array('a'=>'bla','b'=>'omg');if(in_array('omg', $something)){
echo "|1| The 'omg' value found in the assoc array ||";}/**++++++++++++++++++++++++++++++++++++++++++++++
* 2. example with index array using in_array
*
* IMPORTANT NOTE: in_array is case-sensitive
* in_array — Checks if a value exists in an array
*
* DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
*++++++++++++++++++++++++++++++++++++++++++++++
*/
$something = array('bla','omg');if(in_array('omg', $something)){
echo "|2| The 'omg' value found in the index array ||";}/**++++++++++++++++++++++++++++++++++++++++++++++
* 3. trying with array_search
*
* array_search — Searches the array for a given value
* and returns the corresponding key if successful
*
* DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
*++++++++++++++++++++++++++++++++++++++++++++++
*/
$something = array('a'=>'bla','b'=>'omg');if(array_search('bla', $something)){
echo "|3| The 'bla' value found in the assoc array ||";}/**++++++++++++++++++++++++++++++++++++++++++++++
* 4. trying with isset (fastest ever)
*
* isset — Determine if a variable is set and
* is not NULL
*++++++++++++++++++++++++++++++++++++++++++++++
*/
$something = array('a'=>'bla','b'=>'omg');if($something['a']=='bla'){
echo "|4| Yeah!! 'bla' found in array ||";}/**
* OUTPUT:
* |1| The 'omg' element value found in the assoc array ||
* |2| The 'omg' element value found in the index array ||
* |3| The 'bla' element value found in the assoc array ||
* |4| Yeah!! 'bla' found in array ||
*/?>
array_key_exists()verifica as chaves de array, enquanto o último $search_arraycontém array associativo. Sem dúvida não funcionará. Você deve array_flip()primeiro.
Eu não entendo a intenção dessa resposta. Como atingir o objetivo de verificar o valor de um índice?
Brad Koch
Boa pergunta. Isso não responde à pergunta de forma alguma, como está escrito. Não me lembro, mas como respondi cerca de 3 minutos depois que a pergunta foi feita originalmente, acho que o OP editou sua pergunta original para torná-la mais clara, dentro do corte de edição inicial antes de ser registrada como uma edição. Se isso faz algum sentido.
echo
5
Você pode testar se um array tem um certo elemento ou não com isset () ou às vezes até melhor array_key_exists () (a documentação explica as diferenças). Se você não tiver certeza se o array possui um elemento com o índice 'diga', você deve testar isso primeiro ou poderá receber mensagens de 'aviso: índice indefinido ....'.
Quanto ao teste se o valor do elemento é igual a uma string, você pode usar == ou (novamente às vezes melhor) o operador de identidade === que não permite malabarismo de tipo .
in_array () está bem se você estiver apenas verificando, mas se precisar verificar se existe um valor e retornar a chave associada, array_search é uma opção melhor.
$data =['hello','world'];
$key = array_search('world', $data);if($key){
echo 'Key is '. $key;}else{
echo 'Key not found';}
Uma resposta melhor geralmente contém uma explicação além do código. Acredito que fazer isso melhorará sua resposta!
Amit
1
Bem, primeiro um array associativo só pode ter uma chave definida uma vez, então esse array nunca existiria. Caso contrário, use apenas in_array()para determinar se esse elemento específico da matriz está em uma série de soluções possíveis.
Respostas:
Usando
if
?A propósito, você está atribuindo um valor com a chave
say
duas vezes, portanto, sua matriz resultará em uma matriz com apenas um valor.fonte
Você poderia usar a função PHP in_array
fonte
Usando:
in_array()
Aqui está o resultado:
The 'prize_id' element is in the array
Usando:
array_key_exists()
Sem saída
Em conclusão,
array_key_exists()
não funciona com um array simples. É apenas para descobrir se existe ou não uma chave de array. Use em seuin_array()
lugar.Aqui está mais um exemplo:
Aqui está
PHP DEMO
fonte
array_key_exists()
verifica as chaves de array, enquanto o último$search_array
contém array associativo. Sem dúvida não funcionará. Você devearray_flip()
primeiro.Você pode usar:
array_search()
in_array()
array_flip()
earray_key_exists()
fonte
Para verificar se o índice está definido:
isset($something['say'])
fonte
Você pode testar se um array tem um certo elemento ou não com isset () ou às vezes até melhor array_key_exists () (a documentação explica as diferenças). Se você não tiver certeza se o array possui um elemento com o índice 'diga', você deve testar isso primeiro ou poderá receber mensagens de 'aviso: índice indefinido ....'.
Quanto ao teste se o valor do elemento é igual a uma string, você pode usar == ou (novamente às vezes melhor) o operador de identidade === que não permite malabarismo de tipo .
fonte
in_array () está bem se você estiver apenas verificando, mas se precisar verificar se existe um valor e retornar a chave associada, array_search é uma opção melhor.
Isso imprimirá "Chave é 1"
fonte
Basta usar a função PHP
array_key_exists()
fonte
fonte
Bem, primeiro um array associativo só pode ter uma chave definida uma vez, então esse array nunca existiria. Caso contrário, use apenas
in_array()
para determinar se esse elemento específico da matriz está em uma série de soluções possíveis.fonte
Outro uso de in_array in_array () com um array como agulha
fonte
. ie
Você pode usar esta função
Uso:
fonte