array_diff无法使用count codeigniter


array_diff not working with count codeigniter

当我使用分页时,我不希望它计算数组中的某些文件。我尝试过数组diff,但不起作用。

如何使其不计算我的$not_count array()中的任何东西,并使我的$config['total_rows'] = $counted_files;显示正确的计数。

<?php
class Extension_permissions extends Admin_Controller {
public function __construct() {
    parent::__construct();
    $this->load->model('admin/extension/model_extension_permissions');
    if ($this->model_extension_permissions->check_permission_access() == true) {
        return true;
    } else {
        redirect('admin/permission');
    }
}
public function index($page = 0) {
    $data['title'] = "Permissions";
    $controller_files = $this->model_extension_permissions->get_installed_permissions('name'); 
    $data['controller_files'] = array();
    $files = glob(FCPATH . 'application/modules/admin/controllers/*/*.php') ;
    $per_page = 1;
    $offset = $page * $per_page;
    $paginatedFiles = array();
    $not_count = array(
        FCPATH . 'application/modules/admin/controllers/common/dashboard.php',
        FCPATH . 'application/modules/admin/controllers/common/login.php',
        FCPATH . 'application/modules/admin/controllers/common/logout.php',
        FCPATH . 'application/modules/admin/controllers/common/header.php',
        FCPATH . 'application/modules/admin/controllers/common/footer.php'
    );
    $counted_files = array_diff($not_count, count($files)) ;
    if ($counted_files) {
        $paginatedFiles = array_slice($files, $offset, $per_page);
    }
    if ($paginatedFiles) {
        foreach ($paginatedFiles as $file) {
            $controller =  basename(strtolower($file), '.php');
            $modules = $this->model_extension_permissions->get_permissions_by_controller($controller);
            $module_data = array();
            foreach ($modules as $module) {
                $module_data[] = array(
                    'permission_id' => $module['permission_id'],
                    'name' => ucwords(str_replace('_', ' ', $controller) . ' &gt; ' . $module['name']),
                    'edit' => site_url('admin/extension/permissions/update' .'/'. $controller .'/'. $module['permission_id']),
                    'delete' => site_url('admin/extension/permissions/uninstall' .'/'. $controller .'/'. $module['permission_id'])
                );
            }
            $data['controller_files'][] = array(
                'name' => $controller,
                'controller' => $controller,
                'module'    => $module_data,
                'install' => site_url('admin/extension/permissions/install') .'/'.$controller,
                'installed' => in_array($controller, $controller_files)
            );
        }
    }
    $this->load->library('pagination');
    $config['base_url'] = base_url()."admin/extension/permissions";
    $config['total_rows'] = $counted_files;
    $config['per_page'] = $per_page;
    $config['num_links'] = 200;
    $config['uri_segment'] = 4;
    $config['use_page_numbers'] = TRUE;
    $this->pagination->initialize($config); 
    $this->parser->parse('template/extension/extension_permissions', $data);
}
}

array_diff的第一个参数是要进行比较的数组,第二个参数是需要进行比较的阵列。在这种情况下,您希望从$files中排除$not_count。你的代码应该是这样的。

public function index($page = 1) {
        $data['title'] = "Permissions";
        $controller_files = $this->model_extension_permissions->get_installed_permissions('name'); 
        $data['controller_files'] = array();
        $files = glob(FCPATH . 'application/modules/admin/controllers/*/*.php') ;
        $per_page = 5;
        $offset = ($page - 1) * $per_page;
        $paginatedFiles = array();
        $not_count = array(
            FCPATH . 'application/modules/admin/controllers/common/dashboard.php',
            FCPATH . 'application/modules/admin/controllers/common/login.php',
            FCPATH . 'application/modules/admin/controllers/common/logout.php',
            FCPATH . 'application/modules/admin/controllers/common/header.php',
            FCPATH . 'application/modules/admin/controllers/common/footer.php'
        );
        $counted_files = array_diff($files, $not_count) ;
        if (count($counted_files)) {
            $paginatedFiles = array_slice($counted_files, $offset, $per_page, true);
        }
        if ($paginatedFiles) {
            foreach ($paginatedFiles as $file) {
                $controller =  basename(strtolower($file), '.php');
                $modules = $this->model_extension_permissions->get_permissions_by_controller($controller);
                $module_data = array();
                foreach ($modules as $module) {
                    $module_data[] = array(
                        'permission_id' => $module['permission_id'],
                        'name' => ucwords(str_replace('_', ' ', $controller) . ' &gt; ' . $module['name']),
                        'edit' => site_url('admin/extension/permissions/update' .'/'. $controller .'/'. $module['permission_id']),
                        'delete' => site_url('admin/extension/permissions/uninstall' .'/'. $controller .'/'. $module['permission_id'])
                    );
                }
                $data['controller_files'][] = array(
                    'name' => $controller,
                    'controller' => $controller,
                    'module'    => $module_data,
                    'install' => site_url('admin/extension/permissions/install') .'/'.$controller,
                    'installed' => in_array($controller, $controller_files)
                );
            }
        }
        $this->load->library('pagination');
        $config['base_url'] = base_url()."admin/extension/permissions";
        $config['total_rows'] = count($counted_files);
        $config['per_page'] = $per_page;
        $config['num_links'] = 5;
        $config['uri_segment'] = 4;
        $config['use_page_numbers'] = TRUE;
        $config['full_tag_open'] = '<ul class="pagination pagination-sm">'; 
        $config['full_tag_close'] = '</ul>'; 
        $config['num_tag_open'] = '<li>'; 
        $config['num_tag_close'] = '</li>'; 
        $config['cur_tag_open'] = '<li class="active"><span>'; 
        $config['cur_tag_close'] = '<span class="sr-only">(current)</span></span></li>'; 
        $config['prev_tag_open'] = '<li>'; 
        $config['prev_tag_close'] = '</li>'; 
        $config['next_tag_open'] = '<li>'; 
        $config['next_tag_close'] = '</li>'; 
        $config['first_link'] = '&laquo;'; 
        $config['prev_link'] = '&lsaquo;'; 
        $config['last_link'] = '&raquo;'; 
        $config['next_link'] = '&rsaquo;'; 
        $config['first_tag_open'] = '<li>'; 
        $config['first_tag_close'] = '</li>'; 
        $config['last_tag_open'] = '<li>'; 
        $config['last_tag_close'] = '</li>';
        $this->pagination->initialize($config); 
        $this->parser->parse('template/extension/extension_permissions', $data);
    }

希望它对你有用。