有人可以向我解释为什么我在第二个代码片段中获得变量$ subtotal的"注意:未定义变量"但不在第一个代码片段中?他们之间有什么区别?他们是否考虑局部变量?
另外,foreach循环中$ cartKey和$ cartItem的变量类型(Global,Superglobal等等)究竟是什么?为什么我不需要定义/声明它们?
switch( $_SESSION['shippingMethod'] )
{
case "Air":
$shipping = $subtotal * 0.1;
break;
}
Run Code Online (Sandbox Code Playgroud)
和
foreach( $cart as $cartKey => $cartItem )
{
$subtotal += $cartItem['total'];
}
Run Code Online (Sandbox Code Playgroud)
非常感谢你的帮助.
基本上错误是$subtotal在设置之前说明你的使用变量,或者在你的情况下你在设置它之前增加一个值:
$subtotal=0;
foreach( $cart as $cartKey => $cartItem )
{
$subtotal += $cartItem['total'];
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果$subtotal设置可能是由于某些其他代码设置它或未设置,那么应该进行检查,或者您应该在脚本的开头设置它:
$subtotal=(isset($subtotal))?$subtotal:0;
foreach( $cart as $cartKey => $cartItem )
{
$subtotal += $cartItem['total'];
}
Run Code Online (Sandbox Code Playgroud)
在开发任何脚本时,总是一个好主意,必须error_reporting(E_ALL)在代码中给出每个错误,这有助于您从长远来看.一旦看到一些通知未定义的消息,您就会改变编码和检查变量的方式.然后,当脚本准备好发布转E_ALL来0