我成功使用了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个数组。
答案 0 :(得分:12)
第一个示例是关联数组:分配了值的键。第二个例子只是一个更漂亮的说法:
array(0 => 'first', 1 => 'second')
对于第二个,您需要使用in_array。您不应该检查array_key_exists
是否存在密钥,而是检查in_array
是否存在值。
if(in_array('first', $array))
答案 1 :(得分:5)
在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
}
因此,要检查键“first”是否存在,您可以使用
array_key_exists('first',$search_array);
要检查值“first”是否存在,您可以使用
in_array('first',$search_array);
答案 2 :(得分:0)
在第二个示例中,您没有分配数组键 - 您只需设置对象的基本“列表”
使用in_array("first", $search_array);
检查值是否在常规数组中
答案 3 :(得分:0)
在你的第二个例子中,密钥是数字的$search_array
实际上是这样的:
array(0=>'first', 1=>'second');
所以他们key
'先'不存在,value
'第一'确实存在。所以
in_array('first', $search_array);
是您想要使用的功能。
答案 4 :(得分:0)
在PHP中,如果你没有给出数组元素的键,它们就会获取默认键值。这里你的arrray将在内部如下所示
$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";
}