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

Jas*_*vis 11 php arrays

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

下面是一段代码,我正处于需要找到最佳方法来确定是否应该触发错误的地方.

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

我正在考虑使用isset或者其他is_array但我不认为这是答案,因为我设置数组使用**$signup_errors = array()**不会这样做is_array是真的吗?

任何人都可以建议一个好方法吗?

//at the beginning I set the error array
$signup_errors = array();

// I then add items to the error array as needed like this...
$signup_errors['captcha'] = 'Please Enter the Correct Security Code';
Run Code Online (Sandbox Code Playgroud)

cle*_*tus 28

if ($signup_errors) {
  // there was an error
} else {
  // there wasn't
}
Run Code Online (Sandbox Code Playgroud)

它是如何工作的?转换为boolean时,空数组将转换为false.每个其他数组都转换为true.从PHP手册:

转换为布尔值

要将值显式转换为布尔值,请使用(bool)或(boolean)强制转换.但是,在大多数情况下,强制转换是不必要的,因为如果运算符,函数或控制结构需要布尔参数,则会自动转换值.

另见Type Juggling.

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

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

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

  • +1.另外要注意的是,如果你不能保证你的变量已经被初始化(如$ _POST数据的话),那么应该使用**empty()**. (3认同)
  • +1我不知道为什么有人会想做比这更复杂的事情...... (2认同)

gna*_*arf 6

也许是空的()

来自Docs:

返回值

如果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)
Run Code Online (Sandbox Code Playgroud)