分类: PHP

生产环境调试PHP时希望显示错误却不便修改php.ini的解决方法

在测试环境测试通过的代码迁移到生产环境时经常会遇到各种各样的不兼容,从配置文件到代码逻辑(例如生产环境有禁用函数),各种各样的原因都会导致服务器报错,但是通常情况下生产环境不会输出错误,而在生产环境修改php.ini也不方便,不现实。在这种情况下如何才能让PHP显示错误呢?这篇文章便来详细讲解如何在不修改php.ini的情况下使PHP输出错误信息。

继续阅读 生产环境调试PHP时希望显示错误却不便修改php.ini的解决方法

PHP中使用json_decode()后报错”Cannot use object of type stdClass as array“的解决方法

json_decode()是PHP中一个非常实用的自带函数,然而很多情况下我们使用如下代码,却会报错。
$data = json_decode($json);
var_dump($data["test"]);
报错信息为Cannot use object of type stdClass as array
原因何在呢?
继续阅读 PHP中使用json_decode()后报错”Cannot use object of type stdClass as array“的解决方法

PHP常用数组指针操作函数一览

  • each() 函数返回当前元素的键名和键值,并将内部指针向前移动。该元素的键名和键值会被返回带有四个元素的数组中。两个元素(1 和 Value)包含键值,两个元素(0 和 Key)包含键名。
  • 相关的方法:
  • current() – 返回数组中的当前元素的值
  • end() – 将内部指针指向数组中的最后一个元素,并输出
  • next() – 将内部指针指向数组中的下一个元素,并输出
  • prev() – 将内部指针指向数组中的上一个元素,并输出
  • reset() – 将内部指针指向数组中的第一个元素,并输出

[转载]PHP中strtok()函数的用法

不用不知道,一用吓一跳,PHP的函数实在太多,今天就碰到一个完全陌生的函数——strtok。在PHP手册查了一下,全是英文的,上网搜一下有了中文解释~
还是直接用PHP手册上的例子:

 

$string = "This is/tan example/nstring";  
$tok = strtok($string, " /n/t");  
while ($tok !== false) {  
      echo "Word=$tok<br />";  
     $tok = strtok(" /n/t");  
}   

首先$tok=strtok($string, ” /n/t”)这句使$tok获得了第一个令牌,即“This”。

在while循环中,只要$tok不为空就继续执行下面的语句块,即打印$tok的内容。但是对$tok=strtok(” /n/t”)却始终搞不明白。那就用最笨的办法,在这句句子前后都显示一下$tok的内容。这下搞明白了,每调用一次strtok(” /n/t”)语句,就获得下一个令牌。再翻了一下手册,原来strtok可以只调用一个参数,也即分隔符,而strtok会自己保持其内部指针在字符串中 的位置,直到重新传一个字符串给它。这个功能可比explode强大得多了。

PHP内置常量

系统常量

__FILE__ 当前PHP文件的相对路径
__LINE__ 当前PHP文件中所在的行号
__FUNCTION__ 当前函数名,只对函数内调用起作用
__CLASS__ 当前类名,只对类起作用
PHP_VERSION 当前使用的PHP版本号
PHP_OS 当前PHP环境的运行操作系统
TRUE 与true一样
FALSE 与false一样
M_PI 圆周率常量值
M_E 科学常数e
M_LOG2E 代表log2
e,以2为底e的对数

M_LOG10E 代表lg
e,以10为底e的对数

M_LN2 2的自然对数
M_LN10 10的自然对数
E_ERROR 最近的错误之处
E_WARNING 最近的警告之处
E_PARSE 剖析语法有潜在问题之处
__METHOD__ 表示类方法名,比如B::test

 

服务器全局变量

$_SERVER 返回服务器相关信息,返回一个数组
$_GET 所有GET请求过来的参数
$_POST 所有POST过来的参数
$_COOKIE 所有HTTP提交过来的cookie
$_FILES 所有HTTP提交过来的文件
$_ENV 当前的执行环境信息
$_REQUEST 相当于$_POST、$_GET、$_COOKIE提交过来的数据,因此这个变量不值得信任
$_SESSION session会话变量