【问题标题】:Pass an array to the system core Controller.php in CodeIgniter将数组传递给 CodeIgniter 中的系统核心 Controller.php
【发布时间】:2019-06-06 01:08:45
【问题描述】:

我正在将我的 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-&gt;getCountOfNonZero($myArray);

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

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

【问题讨论】:

  • 你说你收到一个错误?错误是什么?这种方法以前不在 system\core\Controller.php 中吗?它在哪里?仅查看函数,它似乎不依赖于控制器中的任何内容,它可能作为辅助函数更好地工作。
  • 感谢@Jeemusu 的评论。我得到的错误是关于 jQuery 中不匹配的标签。这可能是因为这个功能失败了。我想我可能需要阅读辅助函数,因为我对这些不太熟悉。首先,我将在下面尝试您的建议。
  • 你修改了核心控制器?你应该永远这样做。但是,您可以在 application/core 中创建一个核心控制器来扩展核心控制器。谷歌:MY_Controllercodeigniter
  • @DanielAttard 您的代码还有另一个问题。方法第二个参数$d 是必需的,但您没有在示例用法中传递它。如果是可选参数,则需要在定义方法时指定:function getCountOfNonZero($array, $d = null) {

标签: php codeigniter codeigniter-3 codeigniter-2


【解决方案1】:

现在您已将该函数移入一个类中,您需要在从其内部调用该函数时使用$this-&gt;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. 在您的应用程序中的任何地方使用它:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 2021-06-06
    • 2014-02-24
    相关资源
    最近更新 更多