Codeigniter vars里面的视图功能

时间:2014-04-13 00:06:01

标签: php codeigniter

我在视图中有一个函数(我嵌套了代码,所以没有其他选择)。 我的问题是因为我想在函数中添加一些变量。

我无法访问函数内的var。

<div>
<?php _list($data); ?>
</div>

<?php
echo $pre; // Perfect, it works
function _list($data) {
     global $pre;
     foreach ($data as $row) {
          echo $pre." ".$row['title']; // output ' title' without $pre var
          if (isset($row['childrens']) && is_array($row['childrens'])) _list($row['childrens']);
     }
}
?>

2 个答案:

答案 0 :(得分:1)

简单......只需定义这样的函数:

function _list($data, $pre=NULL)

然后在函数内部,您可以检查$ pre是否为NULL然后在其他地方搜索它...在函数中使用全局语句是不可取的。

另一方面,你可以define('pre',$pre);并使用在你的函数中创建的前常量...再次不可取,但它适用于你的例子。

稍后编辑:在帮助中定义您的功能 我不知道为什么我在第一时间忘记建议

答案 1 :(得分:0)

在视图中定义函数很奇怪。使用全局变量会使情况变得更糟。

也许你应该避免全局函数:

<div>
<?php
    foreach($data as $row){
        _list($pre, $row);
    }
?>
</div>

<?php
function _list($pre, $row) {
    echo $pre." ".$row['title'];
    if (isset($row['childrens']) && is_array($row['childrens'])){
        foreach($row['childrens'] as $child){
            _list($pre, $child);
        }
    }
}
?>
顺便说一句,在helper中定义函数会更好

http://ellislab.com/codeigniter/user-guide/general/helpers.html

他们帮忙