Возможно ли иметь массив с одинаковыми ключами? Не будет ли второе значение перезаписать оригинал?
Citricguy 09
47
С помощью: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 ||
*/?>
array_key_exists()проверяет ключи массива, в то время как последний $search_arrayсодержит ассоциативный массив. Без сомнения, это не сработает. Вы должны array_flip()это сделать в первую очередь.
Я не понимаю смысла этого ответа. Как достичь цели проверки значения индекса?
Брэд Кох
Хороший вопрос. Это вообще не отвечает на вопрос, как написано. Я не помню, но поскольку я ответил примерно через 3 минуты после того, как вопрос был первоначально задан, я предполагаю, что OP отредактировал свой исходный вопрос, чтобы сделать его более ясным, в пределах первоначального отсечения редактирования, прежде чем он будет зарегистрирован как редактирование. Если в этом есть смысл.
echo
5
Вы можете проверить, есть ли в массиве определенный элемент вообще или нет, с помощью isset () или даже лучше array_key_exists () (различия объясняются в документации). Если вы не можете быть уверены, есть ли в массиве элемент с индексом say, сначала проверьте это, иначе вы можете получить сообщение «warning: undefined index ....».
Что касается проверки, равно ли значение элемента строке, вы можете использовать == или (опять же, иногда лучше) оператор идентификации ===, который не позволяет манипулировать типами .
in_array () подходит, если вы только проверяете, но если вам нужно проверить, существует ли значение и вернуть связанный ключ, array_search - лучший вариант.
$data =['hello','world'];
$key = array_search('world', $data);if($key){
echo 'Key is '. $key;}else{
echo 'Key not found';}
Лучший ответ обычно содержит пояснение в дополнение к коду. Я считаю, что это улучшит ваш ответ!
amit
1
Во-первых, в ассоциативном массиве ключ может быть определен только один раз, поэтому этот массив никогда не будет существовать. В противном случае просто используйте, in_array()чтобы определить, входит ли этот конкретный элемент массива в массив возможных решений.
Ответы:
Используя
if
?Кстати, вы
say
дважды назначаете значение с помощью ключа , поэтому ваш массив приведет к массиву только с одним значением.источник
Вы можете использовать функцию PHP in_array
источник
С помощью:
in_array()
Вот результат:
The 'prize_id' element is in the array
С помощью:
array_key_exists()
Нет вывода
В заключение,
array_key_exists()
не работает с простым массивом. Его только для того, чтобы узнать, существует ли ключ массива или нет.in_array()
Вместо этого используйте .Вот еще пример:
Вот это
PHP DEMO
источник
array_key_exists()
проверяет ключи массива, в то время как последний$search_array
содержит ассоциативный массив. Без сомнения, это не сработает. Вы должныarray_flip()
это сделать в первую очередь.Ты можешь использовать:
array_search()
in_array()
array_flip()
иarray_key_exists()
источник
Чтобы проверить, определен ли индекс:
isset($something['say'])
источник
Вы можете проверить, есть ли в массиве определенный элемент вообще или нет, с помощью isset () или даже лучше array_key_exists () (различия объясняются в документации). Если вы не можете быть уверены, есть ли в массиве элемент с индексом say, сначала проверьте это, иначе вы можете получить сообщение «warning: undefined index ....».
Что касается проверки, равно ли значение элемента строке, вы можете использовать == или (опять же, иногда лучше) оператор идентификации ===, который не позволяет манипулировать типами .
источник
in_array () подходит, если вы только проверяете, но если вам нужно проверить, существует ли значение и вернуть связанный ключ, array_search - лучший вариант.
Это напечатает «Ключ равен 1».
источник
Просто используйте функцию PHP
array_key_exists()
источник
источник
Во-первых, в ассоциативном массиве ключ может быть определен только один раз, поэтому этот массив никогда не будет существовать. В противном случае просто используйте,
in_array()
чтобы определить, входит ли этот конкретный элемент массива в массив возможных решений.источник
Другое использование in_array in_array () с массивом как иглой
источник
. т.е.
Вы можете использовать эту функцию
Использование:
источник