php比较数组键,而不是值

cof*_*tor 2 php arrays key-value

我正在成功使用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";
}
?>
Run Code Online (Sandbox Code Playgroud)

但是,取出值,它不起作用.

<?php
$search_array = array('first', 'second');
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}
?>
Run Code Online (Sandbox Code Playgroud)

不确定如何仅仅按键来比较2个数组.

Mat*_*chu 12

第一个示例是关联数组:分配了值的键.第二个例子只是一个更漂亮的说法:

array(0 => 'first', 1 => 'second')
Run Code Online (Sandbox Code Playgroud)

对于第二个,您需要使用in_array.你不应该检查是否存在某个键,array_key_exists而是存在一个值,这样in_array做.

if(in_array('first', $array))
Run Code Online (Sandbox Code Playgroud)


Aus*_*yde 5

在PHP中,数组中的每个元素都有两部分:.

除非您手动说出要附加到每个值的键,否则PHP会为每个元素提供一个从0开始的数字索引,递增1.

所以区别

array('first','second')
Run Code Online (Sandbox Code Playgroud)

array('first'=>1,'second'=>4)
Run Code Online (Sandbox Code Playgroud)

是第一个没有用户定义的键.(它实际上有0和1键)

如果你print_r()在第一次做的话就会说出类似的话

Array {
    [0] => "first",
    [1] => "second"
}
Run Code Online (Sandbox Code Playgroud)

而第二个看起来像

Array {
    ["first"]  => 1,
    ["second"] => 2
}
Run Code Online (Sandbox Code Playgroud)

因此,要检查密钥 "first"是否存在,您可以使用

array_key_exists('first',$search_array);
Run Code Online (Sandbox Code Playgroud)

检查是否存在 "first",您将使用

in_array('first',$search_array);
Run Code Online (Sandbox Code Playgroud)