在php中计数

时间:2015-03-21 14:52:02

标签: php codeigniter

当我使用我的glob它让我列出文件。我希望能够计算文件,但不能计算not count array();

中的文件

当我回显计数时,它计数3但应该只回显计数2,没有其他文件。

如何确保计数正确?

<?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转储所有文件输出

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" } 

1 个答案:

答案 0 :(得分:1)

只需使用array_diff()来计算这样的差异:

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

修改

你的问题不清楚,但我想你可能想要这样的事情:

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