我在视图中有一个函数(我嵌套了代码,所以没有其他选择)。 我的问题是因为我想在函数中添加一些变量。
我无法访问函数内的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']);
}
}
?>
答案 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
他们帮忙