将数组传递给CodeIgniter中的系统核心Controller.php

时间:2019-06-06 01:08:45

标签: php codeigniter codeigniter-3 codeigniter-2

我正在将我的CodeIgniter应用程序从2.x版本更新到3.1。以前,我曾经调用此函数来计算传入数组中非零数字的数量:

function getCountOfNonZero($array, $d) {
    $NonZeroCount = 0;
    foreach($array as $key=>$value) {
        if(is_array($value)) {
            $d = $key;
            $NonZeroCount += getCountOfNonZero($value, $d); }
        else {
              if($value<>0 & $key<>'RES') {
                $NonZeroCount++;
            }
        }
    }
    return $NonZeroCount;
}

现在,我尝试在CodeIgniter的3.1版中调用此函数,但出现错误。这就是我调用该函数的方式:

echo "Count of non-zero is: ".$controller->getCountOfNonZero($myArray);

与众不同的是,该函数位于system\core\Controller.php中,但是每当我调用该函数并尝试传递该数组时,都会返回错误。

我为什么不能将数组传递给CodeIgniter中的核心系统控制器?

1 个答案:

答案 0 :(得分:0)

现在您已将函数移到一个类中,从内部调用该函数时将需要使用$this->getCountOfNonZero($value, $d);

function getCountOfNonZero($array, $d) {
    $NonZeroCount = 0;
    foreach($array as $key=>$value) {
        if(is_array($value)) {
            $d = $key;
            $NonZeroCount += $this->getCountOfNonZero($value, $d); }
        else {
              if($value<>0 & $key<>'RES') {
                $NonZeroCount++;
            }
        }
    }
    return $NonZeroCount;
}

我个人可能只是将方法放入helper文件中并自动加载,而不是将其绑定到核心控制器。


创建助手方法:

  1. 由于您的方法与数组有关,因此我们可以通过创建以下文件来扩展已经存在的数组帮助器。

application/helpers/MY_array_helper.php

  1. 将原始方法添加到文件中。

  2. 在系统初始化期间自动加载。这是通过打开application/config/autoload.php文件并将帮助程序添加到自动加载数组来完成的。

  3. 在应用程序中的任何位置使用它: