我正在使用注册表单,我正在使用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()因为它有类似的语义.
也许是空的()?
来自Docs:
返回值
如果var具有非空和非零值,则返回FALSE.
以下内容被认为是空的:
Run Code Online (Sandbox Code Playgroud)"" (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)