2010-05-26 377 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"; 
}