user4419336
user4419336

Reputation:

Counting in php

When I use my glob It lets me list files. I would like to be able to count the files but not the ones in my not count array();

When I echo the count it counts 3 but should only echo count 2 there is no other file.

How do I make sure counts correct?

<?php

class Count extends MX_Controller {

    public function index() {
        $name = glob(FCPATH . 'application/modules/admin/controllers/*/*.php');

        $not_count = array(
            FCPATH . 'application/modules/admin/controllers/common/dashboard.php',
            FCPATH . 'application/modules/admin/controllers/common/footer.php',
            FCPATH . 'application/modules/admin/controllers/common/header.php',
            FCPATH . 'application/modules/admin/controllers/common/login.php',
            FCPATH . 'application/modules/admin/controllers/common/logout.php',
            FCPATH . 'application/modules/admin/controllers/common/menu.php',
            FCPATH . 'application/modules/admin/controllers/common/register.php',
            FCPATH . 'application/modules/admin/controllers/dashboard/customer_total.php',
            FCPATH . 'application/modules/admin/controllers/dashboard/online.php',
            FCPATH . 'application/modules/admin/controllers/dashboard/user_total.php',
            FCPATH . 'application/modules/admin/controllers/error/permission.php'
        );

        var_dump($not_count);
        echo "<br/>";
        echo "<br/>";
        var_dump($name);

        // Not Counting Correct When Echo Out Puts 3 Should be 2
        $filecount1 = count(array_diff($not_count, $name));

        echo "<br/>";
        echo "<br/>";

        echo $filecount1;
    }
}

Var Dump Not Count Array

array(11) { [0]=> string(14) "customer_total" [1]=> string(9) "dashboard" [2]=> string(6) "footer" [3]=> string(6) "header" [4]=> string(5) "login" [5]=> string(6) "logout" [6]=> string(4) "menu" [7]=> string(6) "online" [8]=> string(10) "permission" [9]=> string(8) "register" [10]=> string(10) "user_total" } 

Var Dump All Files Out Put

array(13) { [0]=> string(95) "C:\Xampp\htdocs\project1\application/modules/admin/controllers/common/dashboard.php" [1]=> string(92) "C:\Xampp\htdocs\project1\application/modules/admin/controllers/common/footer.php" [2]=> string(92) "C:\Xampp\htdocs\project1\application/modules/admin/controllers/common/header.php" [3]=> string(91) "C:\Xampp\htdocs\project1\application/modules/admin/controllers/common/login.php" [4]=> string(92) "C:\Xampp\htdocs\project1\application/modules/admin/controllers/common/logout.php" [5]=> string(90) "C:\Xampp\htdocs\project1\application/modules/admin/controllers/common/menu.php" [6]=> string(94) "C:\Xampp\htdocs\project1\application/modules/admin/controllers/common/register.php" [7]=> string(103) "C:\Xampp\htdocs\project1\application/modules/admin/controllers/dashboard/Customer_total.php" [8]=> string(95) "C:\Xampp\htdocs\project1\application/modules/admin/controllers/dashboard/Online.php" [9]=> string(99) "C:\Xampp\htdocs\project1\application/modules/admin/controllers/dashboard/User_total.php" [10]=> string(95) "C:\Xampp\htdocs\project1\application/modules/admin/controllers/error/permission.php" [11]=> string(110) "C:\Xampp\htdocs\project1\application/modules/admin/controllers/extension/extension_permissions.php" [12]=> string(88) "C:\Xampp\htdocs\project1\application/modules/admin/controllers/user/user.php" } 

Upvotes: 1

Views: 138

Answers (1)

Rizier123
Rizier123

Reputation: 59681

Just use array_diff() to only count the difference like this:

echo count(array_diff($files, $ignore));

EDIT:

Your question is unclear, but I think you may want something like this:

echo count(array_filter(array_map(function($v)use($ignore){
    return in_array(pathinfo(basename($v))["filename"], $ignore);
}, $files)));

Upvotes: 1

Related Questions