Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我的变量为空?_Php_Arrays_Codeigniter_Drop Down Menu - Fatal编程技术网

Php 为什么我的变量为空?

Php 为什么我的变量为空?,php,arrays,codeigniter,drop-down-menu,Php,Arrays,Codeigniter,Drop Down Menu,我目前正在编辑一个有PHP经验的工作项目 我知道一些基本知识,但我对MVC和CodeIgniter知之甚少,所以我当然会面临一些问题 我的第一个问题是,我试图填写一个控制器的下拉列表 该视图称为“overview\u screen.php”,控制器称为“overview.php” 在控制器中,我有一个功能: private function getYears() { return array('Test1', 'Test2', 'Test3', 'Test4'); } 我在索引中将其设

我目前正在编辑一个有PHP经验的工作项目

我知道一些基本知识,但我对MVC和CodeIgniter知之甚少,所以我当然会面临一些问题

我的第一个问题是,我试图填写一个控制器的下拉列表

该视图称为“overview\u screen.php”,控制器称为“overview.php”

在控制器中,我有一个功能:

private function getYears()
{
    return array('Test1', 'Test2', 'Test3', 'Test4');
}
我在索引中将其设置为$years:

function index()
{
    $years = $this->getYears();             
    $menu = $this->getMenu();       
}           
当我在$menu上执行var_转储时,它会显示应该显示的菜单,但当我在$YERS上执行var_转储时,它会显示:

PHP Error was encountered   
Severity: Notice    
Message: Undefined variable: years    
Filename: views/overview_screen.php    
Line Number: 92
有人知道为什么会这样吗

[编辑]

补充资料:

<?php
print_r(CI_session::userdata('docent_id'));

if (!$this->session->userdata('docent_id')) {
    header ('Location: /bpv-registratie/welcome.html');
}
?>

<html>
<head>
<title>Registratie Systeem</title>

</head>
<body>

<div id="topmenu">
    <a href="/registratie/" class="button">Start</a>
    <a href="/registratie/welcome/logout.html" class="button">Log uit</a>       
</div>

<div id="topmenuright">
<?php var_dump($years); ?>
    <select>        
        <?php foreach ($years as $row):?>
            <option><?=$row?></option>
        <?php endforeach;?>
    </select>
</div>

<div id="menu">
    {menu}
</div>

<div id="content">
    {content}
</div>

</body>
</html>

登记制度
{menu}
{content}

如果
var\u dump
函数/类之外的
$menu
变量,它将不起作用! 尝试使用:

function index()
{
    global $years;
    global $menu;
    $years = $this->getYears();             
    $menu = $this->getMenu(); 
}

您需要发送变量以查看文件,如下所示

function index()
{
    $data['years'] = $this->getYears();             
    $data['menu'] = $this->getMenu();       
    $this->load->view('views/overview_screen.php',$data);
}

现在,您可以使用$year,$menu作为视图文件中的变量

您可以给出更多关于转储调用放置在何处以及关于getMenu body的代码示例吗。这将有助于了解$years var发生了什么。给定输出,您的视图可能会通过CI的解析器库

代码应该是这样的:

function index()
{
    $this->load->library('parser');
    $data['years'] = $this->getYears();             
    $data['menu'] = $this->getMenu(); 

    $this->parser->parse('overview_screen',$data);

}
我这样说是因为我看到视图文件中使用了方括号,这就是CI使用自己的解析引擎的方式(因此
{menu}
被视为
,反过来,它引用了您在$data数组中设置的索引“menu”)

你经常称之为风景;它类似于@praneth代码,但没有使用php扩展! 因此:


您如何将数据传递到视图?@Dalen:正如所说,我正在使用这个应用程序,因此我不知道它是如何工作的,因此我不知道code igniter如何在控制器和视图之间创建连接。这给了我一个错误,即无法找到views/overview\u screen.php。或者
.php
。除非与php不同,否则不需要扩展
$this->load->view('overview_screen',$data)