Ist es möglich, ein Array mit identischen Schlüsseln zu haben? Würde der zweite Wert nicht das Original überschreiben?
Citricguy
47
Verwenden von: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";}
Hier wird ausgegeben:The 'prize_id' element is in the array
Verwenden von: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";}
Keine Leistung
Zusammenfassend array_key_exists()funktioniert nicht mit einem einfachen Array. Es ist nur zu finden, ob ein Array-Schlüssel vorhanden ist oder nicht. Verwendenin_array() stattdessen.
Hier ist mehr Beispiel:
<?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()sucht nach Array-Schlüsseln, während letzteres $search_arrayassoziatives Array enthält. Kein Zweifel, es wird nicht funktionieren. Du solltest array_flip()es zuerst tun.
Ich verstehe die Absicht dieser Antwort nicht. Wie wird das Ziel erreicht, den Wert eines Index zu überprüfen?
Brad Koch
Gute Frage. Dies beantwortet die Frage überhaupt nicht, wie es geschrieben steht. Ich erinnere mich nicht, aber da ich ungefähr 3 Minuten nach der ursprünglichen Beantwortung der Frage geantwortet habe, würde ich vermuten, dass das OP seine ursprüngliche Frage innerhalb des anfänglichen Bearbeitungsgrenzwerts bearbeitet hat, um sie klarer zu machen, bevor sie als Bearbeitung registriert wird. Wenn das Sinn macht.
Echo
5
Sie können mit isset () oder manchmal sogar noch besser array_key_exists () testen, ob ein Array überhaupt ein bestimmtes Element hat oder nicht. (in der Dokumentation werden die Unterschiede erläutert). Wenn Sie nicht sicher sind, ob das Array ein Element mit dem Index "say" enthält, sollten Sie dies zuerst testen. Andernfalls wird möglicherweise die Meldung "warning: undefined index ...." angezeigt.
Für den Test, ob der Wert des Elements einer Zeichenfolge entspricht, können Sie == oder (wieder manchmal besser) den Identitätsoperator === verwenden, der kein Typ-Jonglieren zulässt .
in_array () ist in Ordnung, wenn Sie nur überprüfen, aber wenn Sie überprüfen müssen, ob ein Wert vorhanden ist, und den zugehörigen Schlüssel zurückgeben müssen, ist array_search eine bessere Option.
$data =['hello','world'];
$key = array_search('world', $data);if($key){
echo 'Key is '. $key;}else{
echo 'Key not found';}
Eine bessere Antwort enthält normalerweise zusätzlich zum Code eine Erklärung. Ich glaube, dies wird Ihre Antwort verbessern!
Amit
1
Zunächst einmal kann für ein assoziatives Array ein Schlüssel nur einmal definiert werden, sodass dieses Array niemals existieren würde. Andernfalls verwenden Sie einfach, in_array()um festzustellen, ob sich dieses bestimmte Array-Element in einem Array möglicher Lösungen befindet.
Antworten:
Verwenden
if
?Übrigens weisen Sie dem Schlüssel
say
zweimal einen Wert zu , sodass Ihr Array zu einem Array mit nur einem Wert führt.quelle
Sie können die PHP- Funktion in_array verwenden
quelle
Verwenden von:
in_array()
Hier wird ausgegeben:
The 'prize_id' element is in the array
Verwenden von:
array_key_exists()
Keine Leistung
Zusammenfassend
array_key_exists()
funktioniert nicht mit einem einfachen Array. Es ist nur zu finden, ob ein Array-Schlüssel vorhanden ist oder nicht. Verwendenin_array()
stattdessen.Hier ist mehr Beispiel:
Hier ist
PHP DEMO
quelle
array_key_exists()
sucht nach Array-Schlüsseln, während letzteres$search_array
assoziatives Array enthält. Kein Zweifel, es wird nicht funktionieren. Du solltestarray_flip()
es zuerst tun.Sie können verwenden:
array_search()
in_array()
array_flip()
undarray_key_exists()
quelle
So überprüfen Sie, ob der Index definiert ist:
isset($something['say'])
quelle
Sie können mit isset () oder manchmal sogar noch besser array_key_exists () testen, ob ein Array überhaupt ein bestimmtes Element hat oder nicht. (in der Dokumentation werden die Unterschiede erläutert). Wenn Sie nicht sicher sind, ob das Array ein Element mit dem Index "say" enthält, sollten Sie dies zuerst testen. Andernfalls wird möglicherweise die Meldung "warning: undefined index ...." angezeigt.
Für den Test, ob der Wert des Elements einer Zeichenfolge entspricht, können Sie == oder (wieder manchmal besser) den Identitätsoperator === verwenden, der kein Typ-Jonglieren zulässt .
quelle
in_array () ist in Ordnung, wenn Sie nur überprüfen, aber wenn Sie überprüfen müssen, ob ein Wert vorhanden ist, und den zugehörigen Schlüssel zurückgeben müssen, ist array_search eine bessere Option.
Dies wird "Schlüssel ist 1" drucken
quelle
Verwenden Sie einfach die PHP-Funktion
array_key_exists()
quelle
quelle
Zunächst einmal kann für ein assoziatives Array ein Schlüssel nur einmal definiert werden, sodass dieses Array niemals existieren würde. Andernfalls verwenden Sie einfach,
in_array()
um festzustellen, ob sich dieses bestimmte Array-Element in einem Array möglicher Lösungen befindet.quelle
Eine andere Verwendung von in_array in_array () mit einem Array als Nadel
quelle
. dh
Sie können diese Funktion verwenden
Verwendung:
quelle