Czy można mieć tablicę z identycznymi kluczami? Czy druga wartość nie nadpisałaby oryginału?
Citricguy
47
Za pomocą: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";}
Oto wynik:The 'prize_id' element is in the array
Za pomocą: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";}
Brak wyjścia
Podsumowując, array_key_exists()nie działa z prostą tablicą. Służy tylko do sprawdzenia, czy klucz tablicy istnieje, czy nie. Użyj in_array()zamiast tego.
Oto więcej przykładów:
<?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()sprawdza klucze tablicy, podczas gdy ta ostatnia $search_arrayzawiera tablicę asocjacyjną. Bez wątpienia to nie zadziała. Powinieneś array_flip()to najpierw.
Nie rozumiem intencji tej odpowiedzi. Jak osiąga się cel, jakim jest sprawdzenie wartości indeksu?
Brad Koch
Dobre pytanie. To w ogóle nie odpowiada na pytanie, tak jak jest napisane. Nie pamiętam, ale ponieważ odpowiedziałem około 3 minuty po pierwszym zadaniu pytania, domyślam się, że OP zredagował swoje oryginalne pytanie, aby było jaśniejsze, w ramach początkowego odcięcia edycji, zanim zostanie ono zarejestrowane jako zmiana. Jeśli to ma jakiś sens.
echo
5
Możesz sprawdzić, czy tablica ma w ogóle określony element, czy nie, za pomocą isset () lub czasami nawet lepiej array_key_exists () (dokumentacja wyjaśnia różnice). Jeśli nie możesz być pewien, czy tablica zawiera element z indeksem „powiedz”, powinieneś go najpierw przetestować lub możesz otrzymać komunikat „ostrzeżenie: niezdefiniowany indeks…”.
Jeśli chodzi o sprawdzenie, czy wartość elementu jest równa łańcuchowi, możesz użyć == lub (znowu czasami lepiej) operatora tożsamości ===, który nie pozwala na żonglowanie typami .
in_array () jest w porządku, jeśli tylko sprawdzasz, ale jeśli chcesz sprawdzić, czy wartość istnieje i zwrócić powiązany klucz, array_search jest lepszą opcją.
$data =['hello','world'];
$key = array_search('world', $data);if($key){
echo 'Key is '. $key;}else{
echo 'Key not found';}
Lepsza odpowiedź zwykle zawiera wyjaśnienie oprócz kodu. Wierzę, że to poprawi Twoją odpowiedź!
popołudniu
1
Cóż, po pierwsze tablica asocjacyjna może mieć klucz zdefiniowany tylko raz, więc ta tablica nigdy by nie istniała. W przeciwnym razie użyj po prostu, in_array()aby określić, czy ten konkretny element tablicy znajduje się w tablicy możliwych rozwiązań.
Odpowiedzi:
Używasz
if
?Przy okazji, przypisujesz wartość kluczowi
say
dwukrotnie, stąd twoja tablica da w wyniku tablicę tylko z jedną wartością.źródło
Można użyć PHP in_array funkcji
źródło
Za pomocą:
in_array()
Oto wynik:
The 'prize_id' element is in the array
Za pomocą:
array_key_exists()
Brak wyjścia
Podsumowując,
array_key_exists()
nie działa z prostą tablicą. Służy tylko do sprawdzenia, czy klucz tablicy istnieje, czy nie. Użyjin_array()
zamiast tego.Oto więcej przykładów:
Tutaj jest
PHP DEMO
źródło
array_key_exists()
sprawdza klucze tablicy, podczas gdy ta ostatnia$search_array
zawiera tablicę asocjacyjną. Bez wątpienia to nie zadziała. Powinieneśarray_flip()
to najpierw.Możesz użyć:
array_search()
in_array()
array_flip()
iarray_key_exists()
źródło
Aby sprawdzić, czy indeks jest zdefiniowany:
isset($something['say'])
źródło
Możesz sprawdzić, czy tablica ma w ogóle określony element, czy nie, za pomocą isset () lub czasami nawet lepiej array_key_exists () (dokumentacja wyjaśnia różnice). Jeśli nie możesz być pewien, czy tablica zawiera element z indeksem „powiedz”, powinieneś go najpierw przetestować lub możesz otrzymać komunikat „ostrzeżenie: niezdefiniowany indeks…”.
Jeśli chodzi o sprawdzenie, czy wartość elementu jest równa łańcuchowi, możesz użyć == lub (znowu czasami lepiej) operatora tożsamości ===, który nie pozwala na żonglowanie typami .
źródło
in_array () jest w porządku, jeśli tylko sprawdzasz, ale jeśli chcesz sprawdzić, czy wartość istnieje i zwrócić powiązany klucz, array_search jest lepszą opcją.
Spowoduje to wydrukowanie „Klucz to 1”
źródło
Po prostu użyj funkcji PHP
array_key_exists()
źródło
źródło
Cóż, po pierwsze tablica asocjacyjna może mieć klucz zdefiniowany tylko raz, więc ta tablica nigdy by nie istniała. W przeciwnym razie użyj po prostu,
in_array()
aby określić, czy ten konkretny element tablicy znajduje się w tablicy możliwych rozwiązań.źródło
Kolejne użycie in_array in_array () z tablicą jako igłą
źródło
. to znaczy
Możesz użyć tej funkcji
Stosowanie:
źródło