我在Magento中有一个扩展,导致system.log 中出现错误
错误消息如下。它在foreach语句之后的return语句中
Notice: Undefined variable: struct
方法是
public function getFeeList($id)
{
//some code here but no statement that contains $struct
foreach($result2 as $kk=>$vv)
{
$struct[$vv['magikfees_id']]['tax_apply']=$vv['tax_apply'];
$struct[$vv['magikfees_id']]['tax_type']=$vv['tax_type'];
....
}
return $struct;
}
据我所知,您不需要声明PHP变量。所以有一个问题是
在这种情况下,$struct变量的作用域是否仅在foreach中?或
代码从未进入foreach语句,所以$struct没有初始化?
在foreach之前声明它会解决这个问题吗?我该如何申报?
不管这个通知,代码真的能工作吗?
您不需要声明PHP变量,但如果不声明,您会收到通知。您可以将其声明为$struct = array();
。
代码会起作用,但由于没有声明$struct
,很可能您犯了一个错误(可能是拼写错误)。PHP通过发送通知来警告您。尽管它在没有声明的情况下确实有效,但建议无论如何都要声明它。
- 不,范围是方法
getFeeList()
。一旦定义了变量,就可以稍后在代码中使用该特定方法访问它。如果代码未输入foreach
,则变量将为null
- 是的,它将删除通知错误。您可以通过在
foreach
之前添加$struct = array();
来完成此操作。另一种解决方法是从php.ini
中的error_reporting
设置中删除E_NOTICE
,或者在代码开头设置ini_set()
- 即使您还没有定义变量,这段特定的代码也应该可以正常工作
虽然在PHP中不需要定义变量,但定义变量是更好的编码实践。