php比较数组键,而不是值

时间:2010-05-26 22:19:49

标签: 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";
}
?>

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

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

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

5 个答案:

答案 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";
}