2016-04-15 140 views
1

有没有更简单,更聪明,更清晰的方式来写这个?如何检查多个数组键是否存在?

if (array_key_exists("name",$array) AND array_key_exists("age",$array) AND array_key_exists("size",$array) AND array_key_exists("gender",$array){ 
     echo "Keys exist!"; 
    } 
+1

可能去'in_array()'和'array_keys()' – Rizier123

+0

HTTP:/ /stackoverflow.com/questions/13169588/how-to-check-if-multiple-array-keys-exists –

+0

'$ keys = ['name','age','size','gender']; $ existCount = count(array_intersect_key(array_flip($ keys),$ array))== count($ keys);' –

回答

4

简单地使用isset(),一种语言结构。

语言构造比函数快得多。

<?php 
$findKeys = array('name', 'age', 'size', 'gender'); 
if (! empty($findKeys) && ! empty($array)) { 
    foreach ($findKeys as $findKey) { 
     if (isset($array[$findKey])) { 
      echo 'Keys exist!'; 
     } 
    } 
} 

说明:

1)创建4个按键组成的数组,你需要找到。

2)遍历这个数组并使用isset()来确定key(元素)是否存在。

1

使用也可以用这样的方式..

<?php 
function array_keys_exist($keys, $array){ 
    foreach($keys as $key){ 
     if(!isset($array[$key]))return false; 
    } 
    return true; 
} 
?> 
1

你可以这样说:

<?php 

$array = array(
    'index1'=>'value1', 
    'index2'=>'value2', 
    'index3'=>'value3' 
); 

$indexesToSearch = array('index1', 'index2'); 

if(count(array_intersect(array_keys($array), $indexesToSearch)) == count($indexesToSearch)) 
{ 
    // ... do something 
}