$mailSent = mail($to, $subject, $message, $headers);
if (!$mailSent) {
$errors['mailfail'] = true;
}
我对这一行感到困惑:
$errors['mailfail'] = true;
$errors
是一个空数组,所以基本上索引mailfail
不存在。正确?
答案 0 :(得分:3)
//use "Mail (Function)" and assign the result to a "Variable"
$mailSent = mail($to, $subject, $message, $headers);
//use "Control Structures" to check the state of the "Variable": true / false
if (!$mailSent)
{
//Assign the index 'mailfail' of an "Array" to a "boolean" of true
$errors['mailfail'] = true;
}
答案 1 :(得分:2)
尝试发送电子邮件,然后检查电子邮件的发送是否成功,如果发送失败,则将变量$ errors ['mailfail']设置为true。
我认为可能让您感到困惑的一件事是它在if语句中的$ mailSent之前有一个感叹号。这个感叹号只是意味着“不”。所以它是“如果(不是$ mailSent),将$ errors ['mailfail']设置为true。” - 它取决于所讨论的功能(在这种情况下是mail(...)函数)结果的真正含义。该函数失败时返回“false”(根据文档),所以问题:“不是$ mailSent?”如果$ mailSent为false,则返回true,表示{...}中的内容被执行。如果你拿出感叹号,只有当mail()函数返回true时才会执行{...}内的东西(在这种情况下意味着“成功”)。
请注意,它不会检查是否收到了邮件,只检查是否已发送邮件。
答案 2 :(得分:2)
$ mailSent是一个变量
邮件($ to,$ subject,$ message,$ headers); 邮件是一个功能名称。此功能将发送邮件。 该函数有4个参数,to,subject,message和headers。
如果函数无法发送邮件,则会将变量的值设置为false。如果成功,它会将veriable的值设置为true
下一行说 if(!$ mailSent){$ errors ['mailfail'] = true; }
如果变量不为真。 Actualy这意味着“如果变量包含”false“ 的!标志意味着不
{$ errors ['mailfail'] = true;只有当变量包含false时才会执行此行(意味着名为“mail”的函数不是成功的
$ errors ['mailfail'] = true; $ errors是变量的集合。 $ errors中名为'mailfail'的变量在此行设置为true。
答案 3 :(得分:0)
它基本上说明:“如果邮件发送失败 - 显示错误发生”
传递邮件/消息信息(To,Subject,Message,Headers)并将该函数的结果存储到$mailSent
。
如果$mailSent
有一个表示成功的值 - 则不会发生任何其他事情(因为它已正确发送)。但如果有一个表示失败的值(!$mailSent
〜不成功),那么它会将“邮件失败”的错误设置为true
。
答案 4 :(得分:0)
您尝试向主题为$to
的{{1}},邮件$subject
和标题$message
发送电子邮件,如果发生错误,则将其放入$headers
答案 5 :(得分:0)
根据文档(link),PHP函数mail
返回一个表示成功或失败的布尔值。据推测,有一个名为$errors
的数组。如果电子邮件失败,则数组索引mailfail
将设置为true。
答案 6 :(得分:0)
任何包含值的东西都不需要在赋值之前声明,无论它是纯变量,数组索引还是对象属性;赋值将根据需要创建它们。这意味着执行后
$errors['mailfail'] = true;
数组$errors
将包含一个带有'mailfail'和值true
的条目,即使在该行之前未定义$errors['mailfail']
(或$errors
)执行。
与从未定义的变量或索引读取不同,分配给一个不会生成警告。在数值方面,也可以自动创建数组。对象也将自动创建,但会在严格模式下生成警告。
<?php
# note that of PHP 5.4, E_ALL includes E_STRICT
error_reporting(E_ALL | E_STRICT);
# creates a variable named $foo:
$foo = 'bar';
# arrays don't need to be created explicitly; the following creates
# $array and $array['foo'] as necessary
$array['foo'] = 'bar';
# objects should be created explicitly,
$obj = new StdClass;
# but object properties don't
$obj->foo = 'bar';
您甚至可以在不存在的数组中指定嵌套索引,并根据需要创建插入数组。
unset($array);
$array['foo'][42]['bar'][]['baz'][]['bam']='bug-AWWK!';
与数组不同,介入对象会在严格模式下生成警告(在开发时应始终使用),当自动创建时,最好明确创建它们。
$obj = new StdClass;
# The following will generate a "Creating default object from empty value"
# warning in strict mode,
//$obj->foo->bar[5]->baz->bam = 'bug-AWWK!';
# so you need to explicitly instantiate each intervening object,
$obj->foo = new StdClass;
# but don't need to assign arrays
# $obj->foo->bar = array();
$obj->foo->bar[5] = new StdClass;
$obj->foo->bar[5]->baz = new StdClass;
$obj->foo->bar[5]->baz->bam = 'bug-AWWK!';