Передайте массив в системное ядро ​​Controller.php в CodeIgniter - PullRequest
0 голосов
/ 06 июня 2019

Я в процессе обновления приложения 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;
}

Теперь, когда я пытаюсь вызвать эту функцию в версии 3.1 CodeIgniter, яполучаю ошибку.Вот как я вызываю функцию:

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

Единственное, что отличается, это то, что функция находится в system\core\Controller.php, но это возвращает ошибку всякий раз, когда я вызываю функцию и пытаюсьпередать массив.

Есть ли причина, по которой я не могу передать массив контроллеру ядра системы в CodeIgniter?

1 Ответ

0 голосов
/ 06 июня 2019

Теперь, когда вы переместили функцию в класс, вам нужно будет использовать $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. Используйте его в любом месте вашего приложения:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...