2017-06-04 57 views
0

php库是否有任何函数来检查是否所有必填字段都设置在数组中?例如:是否有PHP函数会检查以确保字段在数组中设置

function required_fields($vals,$required_fields_names){ 
    for($i = 0; $i < count($required_fields_names); $i++){ 
     if(!array_key_exists($required_fields_names[$i],$vals)){ 
      return false 
     } 
    } 
    return true; 
} 

是否已有一个原生PHP函数/方法来执行此操作?

+1

号虽然没准这有点更快,更具可读性在foreach。 – pvg

+1

不是。在边注上,键可以存在,但它的值可以是空的或空的。 –

回答

1

array_difference是这个最接近的内置功能:

function required_fields($vals,$required_fields_names){ 
    $missing_fields = array_difference($required_fields_names, array_keys($vals)); 
    return empty($missing_fields); 
} 
1

不,没有本地方法。

但您可以改进该代码。

<?php 

function check_keys($keys,$array) { 
    foreach ($keys as $key) { 
     if(!array_key_exists($key, $array)) { 
      return false; 
     } 
    } 
    return true; 
} 

# Test Zone 

$a = array('a' => 1, 
      'b' => 2, 
      'c' => 3); 

$b = ['a','b','c']; 
$c = ['a','b']; 
$d = ['a','b','d']; 


echo (int) check_keys($b,$a).'</br>'; # 1 
echo (int) check_keys($c,$a).'</br>'; # 1 
echo (int) check_keys($d,$a).'</br>'; # 0 
?>