Wie überprüfe ich, ob ein Array-Wert vorhanden ist?

109

Wie kann ich überprüfen, ob $something['say'] der Wert von 'bla'oder hat 'omg'?

$something = array('say' => 'bla', 'say' => 'omg');
Uffo
quelle
45
Die Schlüssel in einem Array müssen eindeutig sein.
Gumbo

Antworten:

113

Verwenden if?

if(isset($something['say']) && $something['say'] == 'bla') {
    // do something
}

Übrigens weisen Sie dem Schlüssel sayzweimal einen Wert zu , sodass Ihr Array zu einem Array mit nur einem Wert führt.

Tatu Ulmanen
quelle
289

Sie können die PHP- Funktion in_array verwenden

if( in_array( "bla" ,$yourarray ) )
{
    echo "has bla";
}
Benjamin Ortuzar
quelle
7
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 ||
 */
?>

Hier ist PHP DEMO

Neeraj Singh
quelle
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.
Chay22
7

Sie können verwenden:

Jasir
quelle
6

So überprüfen Sie, ob der Index definiert ist: isset($something['say'])

Echo
quelle
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 .

if( isset($something['say']) && 'bla'===$something['say'] ) {
  // ...
}
VolkerK
quelle
array_key_exists ist immer eine bessere Lösung
AjayR
5

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';
}

Dies wird "Schlüssel ist 1" drucken

Tom Jowitt
quelle
3

Verwenden Sie einfach die PHP-Funktion array_key_exists()

<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}
?>
Xman Klassik
quelle
3
<?php
if (in_array('your_variable', $Your_array)) {
    $redImg = 'true code here';
} else {
    $redImg = 'false code here';
} 
?>
Vishnu Sharma
quelle
1
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.

animuson
quelle
1
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

Eine andere Verwendung von in_array in_array () mit einem Array als Nadel

<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');

if (in_array(array('p', 'h'), $a)) {
    echo "'ph' was found\n";
}

if (in_array(array('f', 'i'), $a)) {
    echo "'fi' was found\n";
}

if (in_array('o', $a)) {
    echo "'o' was found\n";
}
?>
Ahmad Sayeed
quelle
1

Angenommen, Sie verwenden ein einfaches Array

. dh

$MyArray = array("red","blue","green");

Sie können diese Funktion verwenden

function val_in_arr($val,$arr){
  foreach($arr as $arr_val){
    if($arr_val == $val){
      return true;
    }
  }
  return false;
}

Verwendung:

val_in_arr("red",$MyArray); //returns true
val_in_arr("brown",$MyArray); //returns false
Kareem
quelle