2010-05-26 82 views
2

我成功地使用array_key_exists(),如由php.net描述PHP比较数组键,而不是值

实施例:

<?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个数组。

在第二个例子中
+1

yo是什么意思是“仅通过按键比较2个数组”? – 2010-05-26 22:32:57

回答

12

第一个示例是一个关联数组:带有赋值的键。第二个例子只是说的漂亮方式:

array(0 => 'first', 1 => 'second') 

对于第二个,你就需要使用in_array。你不应该检查是否存在一个密钥,array_key_exists这样做,而是存在一个值,其值为in_array

if(in_array('first', $array)) 
0

,你没有指定数组的键 - 您只需设置对象

使用in_array("first", $search_array);的基本“清单”来检查值是有规则排列

0

在你第二个例子,键是数字你$search_array实际上是这样的:

array(0=>'first', 1=>'second'); 

所以他们key“第一”犯规存在,value“第一”呢。所以

in_array('first', $search_array); 

是你想要使用的功能。

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 
} 

所以,要检查密钥“第一”是否存在,您可以使用

array_key_exists('first',$search_array); 

来检查的“第一”的存在,你可以使用

in_array('first',$search_array); 
0

在PHP中,如果你不给钥匙数组元素,他们采取默认密钥value.Here你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"; 
}