我有下一个数组(CakePHP数组):
Array
(
[id] => 1
[username] => hank
[password] => c9f3fa9ff1cc03389b960f877e9c909e6485ag6h
[email] => user_email@hotmail.com
[country] =>
[city] =>
[phone] => 666666666
[other] =>
)
我想知道某些字段是NULL还是空(如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
中的任何字段是空还是空。
答案 0 :(得分:1)
在你的情况下,你想要这样的东西:
$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_filter
会删除所有等同于false
的值。
答案 1 :(得分:0)
似乎你以错误的方式使用in_array。
我建议迭代$ 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;?>