I am in the process of updating my CodeIgniter app from version 2.x to 3.1. Previously, I used to call this function to count the number of non-zero numbers in the passed-in array:
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;
}
Now that I am trying to call this function in version 3.1 of CodeIgniter, I am getting an error. This is how I call the function:
echo "Count of non-zero is: ".$controller->getCountOfNonZero($myArray);
One thing that is different is that the function is in system\core\Controller.php
but this is returning an error whenever I call the function and try to pass in the array.
Is there any reason why I can't pass an array to the core system controller in CodeIgniter?
Now that you have moved the function into a class you you will need to use $this->getCountOfNonZero($value, $d);
when calling the function from within itself.
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;
}
Personally I would probably just put the method into a helper file and autoload it, rather than tethering it to your core controller.
Creating a helper method:
application/helpers/MY_array_helper.php
Add your original method to the file.
Auto-load it during system initialization. This is done by opening the application/config/autoload.php
file and adding the helper to the autoload array.
Usage it anywhere in your application: