我正在尝试检查数组中是否存在所有必需的值。我以为使用array_intersect
应该是我应该使用的:
$required[0] = 'FirstName';
$required[1] = 'LastName';
$posted['Email'] = '[email protected]';
$posted['FirstName'] = 'Bob';
$posted['Group'] = '5';
print_r(array_intersect($required, $posted));
因此,我想确保$posted
数组中存在“ FirstName”和“ LastName” 。但是,“ LastName”丢失,但这将返回一个空数组结果。
我想念什么?
如果$posted
最初来自$_POST
某个点(例如来自表单输入的值),则将设置所有键,即使某些键可能设置为''
。由于$required
数组中有键作为值,因此最好只在循环中检查必填字段。您可以empty
用来同时验证它们是否存在并具有真实值。假设以下代码是函数的主体或文件的内容,则应可以执行以下操作:
foreach ($required as $requirement) {
// if everything has to have a value, just return false as soon as something doesn't
if (empty($posted[$requirement]) return false;
}
return true;
为什么你有这样做的方式部分array_intersect
不能正常工作,因为该功能将检查值$required
对中的值$posted
,你需要检查中的值$required
对密钥中$posted
。另一部分是array_intersect
将返回两个数组共有的值,而不是缺少的值。
如果其中的某些键$posted
实际上可能不存在,则最好$required
通过键而不是值来定义数组,然后使用array_diff_key
。
$required['FirstName'] = true;
$required['LastName'] = true;
$missing_requirements = array_diff_key($required, $posted);
如果在每一个键$required
的存在$posted
,其结果将是一个空数组,这将评估为false
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句