Я успешно использую array_key_exists (), как описано php.net
Пример:
<?php $search_array = array('first' => 1, 'second' => 4); if (array_key_exists('first', $search_array)) { echo "The 'first' element is in the array"; } ?>
Но, выньте значения, и это не сработает.
<?php $search_array = array('first', 'second'); if (array_key_exists('first', $search_array)) { echo "The 'first' element is in the array"; } ?>
Не знаете, как сравнить только 2 массива только по их ключам.
Первый пример – ассоциативный массив: ключи со значениями. Второй пример – это просто более красивый способ сказать:
array(0 => 'first', 1 => 'second')
Во-вторых, вам нужно будет использовать in_array . Вы не должны проверять наличие ключа, который имеет значение array_key_exists
, а скорее наличие значения, которое делает in_array
.
if(in_array('first', $array))
В PHP каждый элемент массива имеет две части: ключ и значение .
Если вы вручную не укажете, какие ключи вы хотите привязать к каждому значению, PHP дает каждому элементу числовой индекс, начинающийся с 0, с шагом в 1.
Таким образом, разница между
array('first','second')
а также
array('first'=>1,'second'=>4)
что первый не имеет определяемых пользователем ключей. (На самом деле у него есть клавиши 0 и 1)
Если бы вы сначала print_r()
, он сказал бы что-то вроде
Array { [0] => "first", [1] => "second" }
тогда как вторая будет выглядеть
Array { ["first"] => 1, ["second"] => 2 }
Итак, чтобы проверить, существует ли ключ «первым», вы должны использовать
array_key_exists('first',$search_array);
чтобы проверить, существует ли значение «первым», вы должны использовать
in_array('first',$search_array);
во втором примере вы не назначали ключи массива – вы просто установили базовый «список» объектов
используйте in_array("first", $search_array);
проверить, находится ли значение в регулярном массиве
В вашем втором примере ключи являются числовыми, ваш $search_array
выглядит примерно так:
array(0=>'first', 1=>'second');
поэтому key
«первый» не существует, value
«первый» делает. так
in_array('first', $search_array);
это функция, которую вы хотели бы использовать.
В PHP, если вы не даете ключ для элемента массива, они принимают значение ключа по умолчанию. Здесь вы указываете внутри себя, как ниже
$search_array = array(0=>'first', 1=>'second');
В любом случае вы все еще можете устранить эту проблему, используя функцию array_flip, как показано ниже.
$search_array = array('first', 'second'); if (array_key_exists('first', array_flip($search_array))) { echo "The 'first' element is in the array"; }