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

Pass an array to the system core Controller.php in CodeIgniter

我正在将我的 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 中的核心系统控制器?

既然您已将函数移动到 class 中,您将需要在从其内部调用函数时使用 $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. Auto-load 在系统初始化的时候。这是通过打开 application/config/autoload.php 文件并将助手添加到自动加载数组来完成的。

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