数组到字符串转换通知


array to string conversion notice

我在以下代码行中得到了这个神秘的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 样式数组。

从属性取消引用中删除$符号:

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

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