如何使用PHP将数组从方法传递给属性

时间:2015-10-06 18:06:53

标签: php html css arrays oop

其实我想改变当前主题的颜色......这是我的CSS代码:

.active{
    color: red;
    border-left: 1px solid red;
}

这也是我的PHP课程:

class Languages
{
    public $active;
    public $data = '<div class="menu">
                        <ul>
                            <li $active["en"]>English</li>
                            <li $active["fr"]>French</li>
                        </ul>
                    </div>';

    function English()
    {
        // other codes
        $this->active["en"] = 'active';
        return $active;
    }

    function French()
    {
        // other codes
        $this->active["fr"] = 'active';
        return $active;
    }

}

但上面的代码不起作用,为什么?!我该如何解决?

2 个答案:

答案 0 :(得分:2)

你在做什么是不正确的。您的代码没有将变量值添加到字符串中,而是将代码视为文本。

public $data = '<div class="menu">
                    <ul>
                        <li ' . $this->$active["en"] .'>English</li>
                        <li ' . $this->$active["fr"] .'>French</li>
                    </ul>
                </div>';

修改1

您也缺少ID或类属性。

修改2

正如在对此答案的评论中所述,由于变量尚未初始化,您会收到错误,请在{{1}中设置活动变量后将文本添加到$data方法。

编辑3

试试这个,

__construct

答案 1 :(得分:1)

您的代码存在一些问题。首先,使用单引号(')指示PHP不插值。其次,我怀疑data值永远不会更新,因为$active中的值会发生变化。此外,您应该使用class =“active”而不是简单地将“active”添加到li元素中。更有效的解决方案可能类似于以下

class Languages
{
    public $active;

    function English()
    {
        // other codes
        $this->active["en"] = 'active';
        return $active;
    }

    function French()
    {
        // other codes
        $this->active["fr"] = 'active';
        return $active;
    }

    function data()
    {
        return = '<div class="menu">
                        <ul>
                            <li class="' . $this->active["en"] . '">English</li>
                            <li class="' . $this->active["fr"] . '">French</li>
                        </ul>
                        </div>';
    }

}

然后,您可以通过调用$object->data()方法访问生成的html,生成的HTML将始终反映$active中的当前值。或者,您仍然可以将$data存储为成员变量,并且只需要一个函数可以使用function updateData()等新值重新生成它。