Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 视图内的Codeigniter变量函数_Php_Codeigniter - Fatal编程技术网

Php 视图内的Codeigniter变量函数

Php 视图内的Codeigniter变量函数,php,codeigniter,Php,Codeigniter,我在视图中有一个函数(我嵌套了代码,所以没有其他选择)。 我的问题是因为我想在函数中添加一些变量 <div> <?php _list($data); ?> </div> <?php echo $pre; // Perfect, it works function _list($data) { global $pre; foreach ($data as $row) { echo $pre." ".$row['ti

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

<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']);
     }
}
?>
我无法访问函数中的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']);
     }
}
?>

简单。。。只需如下定义函数:

function _list($data, $pre=NULL)
然后在函数内部,您可以检查$pre是否为NULL,然后在其他地方搜索它。。。在函数中使用global语句是不可取的

另一方面,您可以
定义('pre',$pre)并使用在函数中创建的前置常量。。。同样不可取,但这对你的例子很有用

稍后编辑:在助手中定义函数
我不知道为什么我忘了首先提出定义视图中的函数是很奇怪的。使用全局变量会使情况变得更糟

也许您应该避免使用以下全局函数:

<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);
        }
    }
}
?>

顺便说一句,在助手中定义函数会更好


它们有什么帮助

我想你可以添加一个参数作为
function\u list($data,$pre)
。哪里定义了$pre?在控制器中?