Php 检查数组中的空值
我有了下一个数组(CakePHP数组): 我想知道某些字段是空的还是空的(比如Php 检查数组中的空值,php,cakephp-2.3,Php,Cakephp 2.3,我有了下一个数组(CakePHP数组): 我想知道某些字段是空的还是空的(比如country或city)。 我试过这个: 在我的控制器中: ... $user = $this->User->findById($id); $this->set('user', $user['User']); # $user['User'] returns the array seen before. 在我看来 <?php $fields = array('country', 'city',
country
或city
)。
我试过这个:
在我的控制器中:
...
$user = $this->User->findById($id);
$this->set('user', $user['User']); # $user['User'] returns the array seen before.
在我看来
<?php $fields = array('country', 'city', 'phone'); ?>
<?php if (!in_array($fields, $user, true)): ?>
<p>Bad, some fields of $fields are empty</p>
<?php else: ?>
<p>Ok</p
<?php endif;?>
不好,$字段的某些字段为空
好的在你的情况下,你想要这样的东西:
$fields = array('country', 'city', 'phone');
$check = array_filter(array_intersect_key($user, array_flip($fields)));
if (count($check) !== count($fields)) {
// Bad; some fields are empty
} else {
// OK
}
您还可以传递自定义筛选函数;默认情况下,array\u filter
删除任何等于false
的值
编辑:。在您的情况下,您需要以下内容:
$fields = array('country', 'city', 'phone');
$check = array_filter(array_intersect_key($user, array_flip($fields)));
if (count($check) !== count($fields)) {
// Bad; some fields are empty
} else {
// OK
}
您还可以传递自定义筛选函数;默认情况下,array\u filter
删除任何等于false
的值
编辑:。似乎在数组中使用了错误的方式
我建议迭代$fields并检查$user中的值:
<?php $bad_fields = false; ?>
<?php $fields = array('country', 'city', 'phone'); ?>
<?php foreach($fields as $field): ?>
<?php if !$user[$field]: ?>
<?php $bad_fields = true; ?>
<?php endif; ?>
<?php endforeach; ?>
<?php if $bad_fields: ?>
<p>Bad, some fields of $fields are empty</p>
<?php else: ?>
<p>Ok</p>
<?php endif;?>
不好,$字段的某些字段为空
嗯
似乎您在数组中使用了错误的方式
我建议迭代$fields并检查$user中的值:
<?php $bad_fields = false; ?>
<?php $fields = array('country', 'city', 'phone'); ?>
<?php foreach($fields as $field): ?>
<?php if !$user[$field]: ?>
<?php $bad_fields = true; ?>
<?php endif; ?>
<?php endforeach; ?>
<?php if $bad_fields: ?>
<p>Bad, some fields of $fields are empty</p>
<?php else: ?>
<p>Ok</p>
<?php endif;?>
不好,$字段的某些字段为空
嗯
尝试使用这个答案,一个自定义的构建函数:在数组中检查数组值,而不是键,它以字符串作为指针,而不是数组。@Gordon你的意思是如果(count(array\u filter($fields))!==count($array))
?@cbuckley needle可能是数组中关于签名的数组注释不相关;这里使用的函数不正确。请尝试使用此答案,一个自定义生成函数:in_array
检查数组值,而不是键,它以字符串作为指针,而不是数组。@Gordon你的意思是if(count(array_filter($fields))!==count($array))
?@cbuckley needle可能是一个数组,数组中关于签名的所有注释都是无关的;这里使用的函数不正确。谢谢,我知道我可以在$fields上迭代,但我在寻找不同的函数。谢谢,我知道我可以在$fields上迭代,但我在寻找不同的函数。