如何检查PHP数组是否设置了任何值?

时间:2009-09-03 02:46:37

标签: php arrays

我正在使用注册表单,我正在使用PHP,在我的处理部分我运行一些代码,如果提交的项目失败,我会将其添加到errors数组中。

以下是代码片段,我需要找到最佳方法来确定是否应该触发错误。

因此,如果错误数组中设置了值,那么我需要重定向并执行其他操作。

我在考虑使用issetis_array,但我不认为这是答案,因为我使用**$signup_errors = array()**设置数组不会使{{1}是真的吗?

有人能建议一个好方法吗?

is_array

7 个答案:

答案 0 :(得分:27)

if ($signup_errors) {
  // there was an error
} else {
  // there wasn't
}

它是如何工作的?转换为boolean时,空数组将转换为false。每个其他数组都转换为true。来自PHP manual

  

转换为布尔值

     

将值显式转换为   boolean,使用(bool)或(boolean)   管型。但是,在大多数情况下,施法者   是不必要的,因为价值会是   如果是自动转换   操作员,功能或控制   结构需要一个布尔参数。

     

另见Type Juggling。

     

转换为布尔值时,   以下值被视为FALSE:

     
      
  • 布尔值FALSE本身
  •   
  • 整数0(零)
  •   
  • 浮点数0.0(零)
  •   
  • 空字符串,字符串“0”
  •   
  • 包含零元素的数组
  •   
  • 一个零成员变量的对象(仅限PHP 4)
  •   
  • 特殊类型NULL(包括未设置的变量)
  •   
  • 从空标签创建的SimpleXML对象
  •   
  • 其他每个值都被视为TRUE(包括任何资源)。
  •   

你也可以使用empty(),因为它有类似的语义。

答案 1 :(得分:6)

也许是empty()

来自文档:

  

返回值

     

如果var具有非空,则返回FALSE   和非零值。

     

考虑以下事项   是空的:

"" (an empty string)
0 (0 as an integer)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
var $var; (a variable declared, but without a value in a class)

答案 2 :(得分:2)

检查是否......

if(count($array) > 0) { ... }

...如果是,则至少设置一个键值对。

或者,检查数组是否为空():

if(!empty($array)) { ... }

答案 3 :(得分:0)

您可以检查数组的最小值和最大值,在这种情况下,您可以使用键和空值填充大数组,而不必遍历每个键值对

if(!min($array) && !max($array)) { ... }

答案 4 :(得分:0)

语言构造 isset(),用于测试是否设置变量和数组元素而不是NULL。使用 is_array()会告诉您提供给它的参数是否为数组。因此,我不认为使用isset()或is_array()会为您提供正在寻找的正确的所需的结果。

代码:

$signup_errors = array();

意味着......

is_array($signup_errors);

会返回true。但是,这并不意味着PHP的布尔语言规则会评估....

if($signup_errors)
{
     //*Do something if $signup_errors evaluates to true*;
}

as true ,除非添加了一些元素。当你这样做时,

$signup_errors['captcha'] = 'Please Enter the Correct Security Code';

您已满足上述数组的PHP语言要求,以评估 true 。 现在,如果由于某种原因你想要或者需要在将来对数组元素使用isset(),你可以。但是,上面的条件语句对于你来说足够了。

答案 5 :(得分:0)

如果您已经拥有密钥,则使用array_filter,但想要检查非布尔值的值。

<?php
$errors = ['foo' => '', 'bar' => null];
var_dump(array_filter($errors));

$errors = ['foo' => 'Oops', 'bar' => null];
var_dump(array_filter($errors));

输出:

array (size=0)
  empty
array (size=1)
  'foo' => string 'Oops' (length=4)

使用:

<?php
if(array_filter($errors)) {
    // Has errors
}

答案 6 :(得分:0)

我应该在这里添加一个明显的答案。如果将错误数组初始化为空数组。然后稍后要检查它是否不再是空数组:

<?php
$errors = [];

if($errors !== [])
{
    // We have errors.
}