php сравнить ключи массива, а не значения

Я успешно использую 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"; }