解决关于PHP“Undefined variable”变量未定义

 更新时间:2016年11月25日 14:59  点击:2209
php中变量可以不定义的但是我们如果不对错误进行一些处理在使用未定义的变量时会提示Undefined variable错误了,下面我给大家举几个实例。

PHP错误提示“Undefined variable”:变量未定义,如果你在php.ini设置中屏蔽了Notice这个等级的提示那么他就不会显示任何提示了,但是为了程序的严谨性考虑,我们尽量避免任何警告、错误等明显的程序缺陷。

例一:class.Chinese.php中以下代码就会出错“Undefined variable”:

 代码如下 复制代码

for ( $i=0; $i<strlen($hexdata); $i+=2 )
 $bindata.=chr(hexdec(substr($hexdata,$i,2)));

正确的写法应该是:

 代码如下 复制代码

$bindata='';
for ( $i=0; $i<strlen($hexdata); $i+=2 )
 $bindata.=chr(hexdec(substr($hexdata,$i,2)));

例二:以下代码也会出错“Undefined variable”:

 代码如下 复制代码

$sl = "zh-CN";
$tl = "en";
function app_out($c,$gbk){
 $data = app_get_translate($c,$sl,$tl);
 $out = str_replace($c,$data,$c);
 return app_js_out($out,$gbk);
}

正确的写法应该是:

 代码如下 复制代码

$sl = "zh-CN";
$tl = "en";
function app_out($c,$gbk){
 global $sl,$tl; //将此函数体内的这两个变量定义为全局变量,以便使用开头设定的值
 $data = app_get_translate($c,$sl,$tl);
 $out = str_replace($c,$data,$c);
 return app_js_out($out,$gbk);
}


本来php是不需要定义变量的,但是出现这种情况应该怎么办呢?

只要在C:WINDOWS找出php.ini的

  在php.ini中的302行 error_reporting = E_ALL

  修改成

  error_reporting = E_ALL & ~E_NOTICE再重启apache2.2就行了

解决方法:修改php.ini

  将: error_reporting = E_ALL

修改为:error_reporting = E_ALL & ~E_NOTICE

  如果什么错误都不想让显示,直接修改:

  display_errors = Off

  如果你没有php.ini的修改权限,可在php头部加入

  ini_set("error_reporting","E_ALL & ~E_NOTICE");

下在看一个利用fopen,file_get_contents读取本地服务器中.php文件的代码并显示的一些方法总结

如我有两个文件a.php,b.php。

a.php文件中的语句是:

 代码如下 复制代码

<?php
echo “i am a.php”;
?>

现在,我需要在b.php文件显示文件a.php中的源代码,是源代码,如下:

 代码如下 复制代码

<?php
$a_code = file_get_contents(‘a.php’);
echo htmlspecialchars($a_code);//www.111cn.net
?>

重点即在此htmlspecialchars()函数,htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。


再看一实例fopen()函数

 代码如下 复制代码

$file = fopen("a.php","r");

效果与上面也是一样的,当然如果只是要在a.php中显示b.php 我们直接使用inlucde()调用即可

 

 代码如下 复制代码
inlucde('a.php');

即可

如果是想读取远程服务器的.php文件,那么返回的是html内容了,这个不要问为什么否则大家都不写程序了。

文件名:一律小写,单词间以下划线分隔,类名:采用首字母大写的驼峰命名方式 类中的方法名:采用首字母小写的驼峰方式命名 类中的私有方法和私有变量:以下划线开头 函数名(变量名):全小写,单词间以下划线分隔

下面具体介绍

Θ 类文件都以.class.php为后缀,使用驼峰法命名,并且首字母大写,例如 Pay.class.php;
Θ 类名和目录_文件名一致。例如:类名Zend_Autoloader的目录是Zend/Autoloader.class.php;
Θ 函数的命名使用小写字母和下划线的方式。例如:get_client_ip;
Θ 方法的命名使用驼峰法,首字母小写或者使用下划线”_”,例如listComment(),_getResource(),通常下划线开头的方法属于私有方法;
Θ 属性的命名使用驼峰法,首字母小写或者使用下划线”_”,如$username,$_instance,通常下划线开头的属性属于私有属性;
Θ 常量以大写字母和下划线”_”命名,如”HOME_URL”;

理解一下消化一下:

1.缩进及行的长度

缩进4个空格,而不是tab(有些编辑器可以配置一个tab代表多个空格,注意是空格);每行保持大约75-85个字符的长度

2.控制结构

这个部分最容易忽略,也是影响代码美感最重要的方面,例子很详细了,受益匪浅。

 代码如下 复制代码

<?php
if ((condition1) || (condition2)) {
    action1;
} elseif ((condition3) && (condition4)) {
    action2;
} else {
    defaultaction;
}
?>
<?php
switch (condition) {
case 1:
    action1;
    break;

case 2:
    action2;
    break;

default:
    defaultaction;
    break;
}
?>

<?php

if (($condition1
    || $condition2)
    && $condition3
    && $condition4
) {
    //code here
}
?>

<?php

$a = $condition1 && $condition2
    ? $foo : $bar;

$b = $condition3 && $condition4
    ? $foo_man_this_is_too_long_what_should_i_do
    : $bar;
?>

3.函数调用

 代码如下 复制代码

<?php
$var = foo($bar, $baz, $quux);
$short         = foo($bar);
$long_variable = foo($baz);
?>

4.类名规范

 代码如下 复制代码

<?php
class Foo_Bar
{

    //... code goes here

}
?>

5.方法名规范(驼峰命名 )

 代码如下 复制代码

<?php
function fooFunction($arg1, $arg2 = '')
{
    if (condition) {
        statement;
    }
    return $val;
}
?>

6.数组定义规范

 

 代码如下 复制代码

<?php

$some_array = array(
    'foo'  => 'bar',
    'spam' => 'ham',
);
?>

7.注释

http://pear.php.net/manual/en/standards.sample.php

http://pear.php.net/manual/en/standards.header.php

8.Including Code

任何时候都应该采用include_once或者require_once

require_once 'foo.php'

文章是一个简单应用实例利用foreach遍历数组,然后给数组增加一些值进去了,方法比较简单,本文章后来介绍了直接使用array_push 来给数组增加值两者本人更喜欢后者一些。

例1

 代码如下 复制代码

foreach($list as &$value){
  
   if(isOnline($value['uid'])){
   $value['sid'] = '1';
  
   }else{
      $value['sid'] = '0';
         }
         $value['likes']='1';
   $sql="SELECT uid,likes,flower  FROM ".DB::table("dmember_member_count")." WHERE uid='".$value['uid']."'";
   $fff = DB::query($sql);
   $ffff = DB::fetch($fff);
   //print_r($ffff);
  
   $value['flower']=$ffff['flower'];
   $value['likes']=$ffff['likes'];
  }

例子 2,array_push() 函数

 代码如下 复制代码

<?php
$a=array("Dog","Cat");
array_push($a,"Horse","Bird");
print_r($a);
?>

输出:

Array ( [0] => Dog [1] => Cat [2] => Horse [3] => Bird )

例子 3
带有字符串键的数组:

 代码如下 复制代码

<?php
$a=array("a"=>"Dog","b"=>"Cat");
array_push($a,"Horse","Bird");
print_r($a);
?>

输出:

Array ( [a] => Dog [b] => Cat [0] => Horse [1] => Bird )

如果你使用的确php代码我们可以使用$_SERVER[HTTP_X_REWRITE_URL]与ORIG_PATH_INFO来判断你所使用的环境是iis还是apache了

if(isset($_SERVER['HTTP_X_REWRITE_URL'])) // IIS

else if(isset($_SERVER['ORIG_PATH_INFO']))  // IIS 5.0 CGI

//以上两行代码,在yii里的,原样复过来的。

//只作参考

 

[!--infotagslink--]

相关文章

  • PHP成员变量获取对比(类成员变量)

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • 解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题

    这篇文章主要介绍了解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-28
  • C#变量命名规则小结

    本文主要介绍了C#变量命名规则小结,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-09
  • R语言 如何删除指定变量或对象

    这篇文章主要介绍了R语言删除指定变量或对象的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • 解决vue的router组件component在import时不能使用变量问题

    这篇文章主要介绍了解决vue的router组件component在import时不能使用变量问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-27
  • Vue select 绑定动态变量的实例讲解

    这篇文章主要介绍了Vue select 绑定动态变量的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-23
  • 深入理解PHP变量的值类型和引用类型

    在PHP中,大部分变量类型,如字符串,整型,浮点,数组等都是值类型的,而类和对象是引用类型,在使用的时候,需要注意这一点。看到网友在讨论PHP的&符号,要彻底理解它的用法,就有必要讨论一下变量的两种形式。PHP的变量在内存中是这样...2015-10-23
  • java中String类型变量的赋值问题介绍

    下面小编就为大家带来一篇java中String类型变量的赋值问题介绍。小编觉得挺不错的。现在分享给大家,给大家一个参考。...2016-03-28
  • C#不同类型的成员变量(字段)的默认值介绍

    虽然C#编译器为每个类型都设置了默认类型,但作为面向对象的设计原则,我们还是需要对变量进行正确的初始化。实际上这也是C#推荐的做法...2020-06-25
  • 详解ES6实现类的私有变量的几种写法

    这篇文章主要介绍了详解ES6实现类的私有变量的几种写法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10
  • python 实现循环定义、赋值多个变量的操作

    这篇文章主要介绍了python 实现循环定义、赋值多个变量的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • 解决jquery插件:TypeError:$.browser is undefined报错的方法

    首先先说一说$.browser browser就是用来获取浏览器基本信息的。 jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需...2015-11-24
  • Nest.js环境变量配置与序列化详解

    这篇文章主要给大家介绍了关于Nest.js环境变量配置与序列化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-21
  • C++变量,常量,数组和字符串详解

    这篇文章主要介绍了C++变量,常量,数组和字符串,是C++入门学习中的基础知识,需要的朋友可以参考下,希望能够给你带来帮助...2021-10-21
  • 在JS中如何使用css变量详解

    这篇文章主要给大家介绍了关于如何在JS中如何使用css变量以及export之javascript关键字的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2021-09-02
  • C#设置与获取环境变量的方法详解

    这篇文章主要给大家介绍了关于C#设置与获取环境变量的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。...2020-06-25
  • 基于条件变量的消息队列 说明介绍

    本篇文章小编为大家介绍,基于条件变量的消息队列 说明介绍。需要的朋友参考一下...2020-04-25
  • Perl中的特殊内置变量详细介绍

    这篇文章主要介绍了Perl中的特殊内置变量详细介绍,需要的朋友可以参考下...2020-06-29
  • node.js 全局变量的具体使用

    这篇文章主要介绍了node.js 全局变量的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-15
  • Lua判断变量是否为数字、字符串是否可以转换为数字等

    这篇文章主要介绍了Lua判断变量是否为数字、字符串是否可以转换为数字等,本文讲解了Lua 判断是字符还是数字的方法、Lua判断数字的方法、判断可否转换为数字的方法、判断并且准备一个初值的方法,需要的朋友可以参考下...2020-06-30