Как проверить, существует ли значение массива?

Как я могу проверить, имеет ли $something['say'] значение 'bla' или 'omg' ?

 $something = array('say' => 'bla', 'say' => 'omg'); 

Использование if ?

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

Btw, вы назначаете значение с ключевым say дважды, поэтому ваш массив приведет к массиву с одним значением.

Вы можете использовать функцию PHP in_array

 if( in_array( "bla" ,$yourarray ) ) { echo "has bla"; } 

Использование: 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"; } 

Вот вывод: The 'prize_id' element is in the array


Использование: 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"; } 

Нет выхода


В заключение, array_key_exists() не работает с простым массивом. Его единственное, что можно найти, например, массив ключей или нет. Вместо этого используйте in_array() .

Вот еще пример:

 <?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 || */ ?> - <?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 || */ ?> 

Вот PHP DEMO

Чтобы проверить, определен ли индекс: isset($something['say'])

Вы можете использовать:

  • array_search()
  • in_array()
  • комбинация array_flip() и array_key_exists()

Вы можете проверить, имеет ли массив определенный элемент вообще или нет с isset (), а иногда даже лучше array_key_exists () (в документации объясняются различия). Если вы не можете быть уверены, что массив имеет элемент с индексом «say», вы должны сначала проверить это, или вы можете получить сообщения «warning: undefined index ….».

Что касается проверки того, равна ли значение элемента строке, которую вы можете использовать == или (иногда иногда лучше), то идентификационный оператор ===, который не позволяет манипулировать типом .

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

in_array () отлично, если вы только проверяете, но если вам нужно проверить, существует ли значение и возвращать связанный ключ, array_search – лучший вариант.

 $data = array( 0 => 'hello', 1 => 'world' ); $key = array_search('world', $data); if ($key) { echo 'Key is ' . $key; } else { echo 'Key not found'; } 

Это напечатает "Key is 1"

Просто используйте функцию PHP 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"; } ?> 
 <?php if (in_array('your_variable', $Your_array)) { $redImg = 'true code here'; } else { $redImg = 'false code here'; } ?> 

Ну, во-первых, ассоциативный массив может иметь только один ключ, определенный таким образом, чтобы этот массив никогда не существовал. В противном случае просто используйте in_array() чтобы определить, находится ли этот конкретный элемент массива в массиве возможных решений.

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

Другое использование in_array in_array () с массивом в виде иглы

 <?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"; } ?> 

Предполагая, что вы используете простой массив

, т.е.

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

Вы можете использовать эту функцию

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

Применение:

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