在数组列表Codeigniter 3中添加一个数组?

时间:2015-06-10 04:00:12

标签: php arrays codeigniter

Hello社区有一个查询,问题是我有一个咨询数据库的方法,它调用方法假定参数化时间。

正如我评论使用PHP框架CodeIgniter,问题是这一次被查阅并加载了第一个数组列表,名为: $ listSubPrim

我想要那个数组列表,添加列表 $ listSubSecu 中的另一个数组,但问题是我发现它不能按照我想要的方式工作,尽管方法添加 array_push

principal_model.php

<?php
class Principal_model extends CI_Model {

    public function __construct() {
        $this->load->database();
    }

    function obtenerPermisosNivel($icodrol, $nivelmenu) {
        try{
            $sql = 'SELECT ICODMAEMENU, ICODROL, VDESMAEMENU, VDESICONO, VDESIDMAEMENU, ';
            $sql = $sql.'ICODPADMENU, VDESCOMAND, SIORDPRIORIDAD, ICODSUBMENU, BACTIVO ';       
            $sql = $sql.'FROM TABMAEMENU ';
            $sql = $sql.'WHERE ICODROL = ? ';
            $sql = $sql.'AND BACTIVO = ? ';     
            switch ($nivelmenu) {
                case NIVEL_SUB_MENU_PRIMARIO:
                    $sql = $sql.'AND ICODPADMENU IS NULL ';
                    $sql = $sql.'ORDER BY ICODMAEMENU ';
                    break;
                case NIVEL_SUB_MENU_SECUNDARIO:
                    $sql = $sql.'AND ICODPADMENU IS NOT NULL ';
                    $sql = $sql.'AND ICODSUBMENU IS NULL ';
                    $sql = $sql.'ORDER BY SIORDPRIORIDAD ';
                    break;
                case NIVEL_SUB_MENU_TERCIARIO:
                    $sql = $sql.'AND ICODPADMENU IS NOT NULL ';
                    $sql = $sql.'AND ICODSUBMENU IS NOT NULL ';
                    $sql = $sql.'ORDER BY SIORDPRIORIDAD ';
                    break;
            }
            $query = $this->db->query($sql, array($icodrol, ESTADO_ACTIVO));
            return $query->result_array();
        } catch(Exception $e){
            log_message('debug', $e->getMessage()); // use codeigniters built in logging library
            show_error($e->getMessage()); // or echo $e->getMessage()
        }           
    }

    function obtenerPermisosMenu($icodrol) {
        try{
            /* Obtenemos el listado de SubMenus Primarios de toda la lista */
            $listSubPrim = $this->obtenerPermisosNivel($icodrol, NIVEL_SUB_MENU_PRIMARIO);
            /* Obtenemos el listado de SubMenus Secundarios de toda la lista */     
            $listSubSecu = $this->obtenerPermisosNivel($icodrol, NIVEL_SUB_MENU_SECUNDARIO);

            /* Obtenemos el listado de SubMenu de asociado al SubMenu primario */           
            foreach ($listSubPrim as $pri) {
                $listSubMenuItem = array();
                foreach ($listSubSecu as $sec) {
                    if($sec['ICODPADMENU'] == $pri['ICODMAEMENU']) {
                        array_push($listSubMenuItem, $sec);
                    }               
                }
                if (count($listSubMenuItem) > 0) {
                    array_push($pri, $listSubMenuItem);
                }               
            }           

            /* Obtenemos el listado de SubMenus Terciarios de toda la lista */  
            $listSubTerc = $this->obtenerPermisosNivel($icodrol, NIVEL_SUB_MENU_TERCIARIO);
            /* Obtenemos el listado de SubMenu de asociado al SubMenu secundario */
            foreach ($listSubPrim as $pri) {
                $listSubSecu = $pri[10];
                if (is_array(listSubSecu)) {
                    foreach (listSubSecu as $sec) {
                        $listSubMenuItem = array();
                        foreach ($listSubTerc as $ter) {
                            if($sec['ICODMAEMENU'] == $ter['ICODSUBMENU']) {
                                array_push($listSubMenuItem, $sec);
                            }               
                        }
                        array_push($sec, $listSubMenuItem);
                    }
                }           
            }
            return $listSubPrim;    
        } catch(Exception $e){
            log_message('debug', $e->getMessage()); // use codeigniters built in logging library
            show_error($e->getMessage()); // or echo $e->getMessage()
        }
    }

}
?>

我意识到要回到列表中: $ listSubPrim

数组的有限位置10应该是一个数组,如代码中所示。

$listSubSecu = $pri[10];

我希望你理解我的问题。 基本上我只想要一个修复列表,有三个级别。 谢谢。

1 个答案:

答案 0 :(得分:0)

您好我会更清楚地解释第一个数组列表的印象: $ listSubPrim

$listSubPrim = $this->obtenerPermisosNivel($icodrol, NIVEL_SUB_MENU_PRIMARIO);

$listSubSecu = $this->obtenerPermisosNivel($icodrol, NIVEL_SUB_MENU_SECUNDARIO);

foreach ($listSubPrim as $pri) {
    log_message('debug', '-> '.$pri['ICODMAEMENU'].' - '.$pri['ICODROL'].' - '.$pri['VDESMAEMENU']);                
}

我打印了数组列表的结果,你会注意到:

DEBUG - 2015-06-10 16:43:31 --> -> 85 - 2 - Las 20 Mejores Ofertas
DEBUG - 2015-06-10 16:43:31 --> -> 86 - 2 - Ofertas Inteligentes
DEBUG - 2015-06-10 16:43:31 --> -> 87 - 2 - Descuentos Restaurantes
DEBUG - 2015-06-10 16:43:31 --> -> 88 - 2 - Categorias

我需要你在那一行,为数组foreach中的每一行添加数组列表: $ listSubSecu

唉希望我理解。 谢谢。