0

我在以下代码行中得到了这个神秘的 nbotice:

$this->$aStyles = $aStyles;

这行代码存在于这个函数中:

private function cleanStyles()
{
    if ((isset($this->sValue))&&($this->sValue))
    {
        $this->aStyles = array();
        return true;
    }
    $aStyles = array();
    foreach ($this->aStyles as $oStyle)
        if ($oStyle->cleanStyles())
            $aStyles[] = $oStyle;
    $this->$aStyles = $aStyles;
    return (count($this->$aStyles)>0);
}

知道为什么会出现此通知吗?

这里有一些关于我正在尝试做的事情的背景知识:我有一个代表 excel 报告的对象层次结构。层次结构与 phpExcel 对话以实际绘制报告。准备绘制层次结构时采取的步骤之一是清理样式数组。

样式对象可以包含样式对象的数组,也可以包含一个值。

cleanStyles 应该递归地清理样式,因此可以通过确保存在的所有样式具有值或有效样式数组来将它们转换为有效的 phpExcel 样式数组。

4

1 回答 1

1

$从您的属性取消引用中删除标志:

$this->aStyles = $aStyles;
------^

您的代码不起作用,因为 php$aStyles在尝试访问对象值之前尝试进行评估。aStyles在这种情况下,aStyles 是一个数组,因此您会收到通知,因为该语法仅在为 String时才有效

于 2012-04-18T06:14:17.087 回答