1

我有下一个数组(一个 CakePHP 数组):

Array
(
    [id] => 1
    [username] => hank
    [password] => c9f3fa9ff1cc03389b960f877e9c909e6485ag6h
    [email] => user_email@hotmail.com
    [country] => 
    [city] =>
    [phone] => 666666666
    [other] =>
)

我想知道某些字段是 NULL 还是空的(比如countryor 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是否为 NULL 或空。

4

2 回答 2

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.

编辑这是一个例子

于 2013-01-30T12:31:07.340 回答
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;?>
于 2013-01-30T12:31:52.340 回答