未定义的变量-如何检查var是否存在


Undefined variable - how to check if var exists

我有两种类型的视图,将向用户显示:登录页面和所有其他可以看到菜单的页面。如果你没有登录,你将看不到菜单。

我现在试图实现的是使用1个模板,其中页眉和页脚是自动加载的,内容是动态的,这取决于调用视图的控制器。

目前,我的登录控制器中有这个

$data['content'] = 'login_view';
$data['menu'] = 'nomenu';
$this->load->view('templates/template', $data);

这就是我的登录控制器中的内容

$data['content'] = 'profile_view';
$this->load->view('templates/template', $data);

正如你所看到的,我不会发送$data['menu']

我的视图是这样的:

<?php $this->load->view('templates/header'); ?>
<?php 
    if($menu == 'nomenu'){
    }   
    else{
        $this->load->view($menu);
    }
?>
<?php $this->load->view($content); ?>
<?php $this->load->view('templates/footer'); ?>

这里的问题是我登录的控制器

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: menu
Filename: templates/template.php
Line Number: 7

有没有办法检查我的$menu是否存在,因为只有当它是登录视图时,我才会发送$menu,否则我不会。

它很简单,只需使用isset来检查变量是否已定义

<?php $this->load->view('templates/header'); ?>
<?php 
    if(isset($menu) && $menu== 'nomenu'){
    }   
    else{
        $this->load->view($menu);
    }
?>
<?php $this->load->view($content); ?>
<?php $this->load->view('templates/footer'); ?>

你可能会把load放在你的if检查中,因为如果$menu没有设置,那么在其他情况下,它会触发未定义的错误,你应该像这样做

<?php $this->load->view('templates/header'); ?>
<?php 
    if(isset($menu) && $menu== 'nomenu'){
   $this->load->view($menu);
    }   
    else{
        $this->load->view('load other view');
    }
?>
<?php $this->load->view($content); ?>
<?php $this->load->view('templates/footer'); ?>

或者发送$data['menu']=FALSE;在第二个控制器上