php中print_r、var_dump和var_export几个函数的用法区别
print_r ( $array/$var )
print 是打印的意思,而r则取自Array的单词,那么该函数的功能就是打印数组内容,它既可以打印数组内容,也可以打印普通的变量。
print_r ($_REQUEST) ;
print_r ($_GET) ; /* 打印使用GET方法传递的表单内容*/
print_r($_POST) ; /* 打印使用表单POST方法传递过的数组内容*/
2、 var_dump ($object/$array/$var)
var 代表变量(Variable),变量包括对象、数组以及标量变量,dump有倒出之意,加在一块,就是将变量或对象的内容全部输出出来。
var_dump($DB) ; /*打印$DB数据库连接对象的内容*/
var_dump($fileHandle) ; /*打印文件句柄对象的内容*/
var_dump($Smarty) ; /*打印Smarty模板对象*/
3、 var_export($object/$array/$var)
输出或返回一个变量的字符表示。此函数返回关于传递给函数的变量的结构信息,它和print_r()类似,不同的是其返回的表示是合法的PHP代码。可以通过将函数的第二个参数设置为TRUE,从而返回变量的表示。
看下面代码:
<?php
$a = array (1,2, array("a","b","c")) ;
var_export ($a) ;
echo "<br>" ;
$v = var_export ($a , TRUE) ;
echo $v ;
?>
上例中,$v = var_export ( $a , TRUE) 表示返回的是PHP的源代码,可以直接用PHP脚本的数组文件中。
总结说明:
以上三个函数都可以打印对象的值、系统函数值以及数组的内容;
1、 echo 、print、printf可以打印变量内容,但不能显示数组及系统超级变量数组;
2、 print_r 和 var_dump不仅可以打印数组、标量变量,还可以打印对象的内容;
3、 var_dump语句不仅能打印变量、数组内容,还可以显示布尔变量和资源(Resource)的内容;
4、var_export 函数返回关于传递给该函数的变量的结构信息,和 var_dump()函数类似,不同的是其返回的内容是合法的PHP代码。
===================================================================
php setcookie一些限制
1、使用setcookie必须在<html>标签之前
2、使用setcookie之前,不可以使用echo输入内容
3、直到网页被加载完后,cookie才会出现
4、setcookie必须放到任何资料输出浏览器前,才送出
.....
由于上面的限制,在使用setcookie()函数时,学会遇到 "Undefined index"、"Cannot modify header information - headers already sent by"…等问题,解决办法是在输出内容之前,产生cookie,可以在程序的最上方加入函数 ob_start();
ob_start :打开输出缓冲区
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
===========================================================================
php不同路径cookies取值问题
setcookie (cookie名, cookie值, 有效期, cookie路径, 所在域 )
注意第四个参数,cookie路径,如果我们设置成 '/' 那么就对整个网站都有效。
使setcookie 必须同路径才行a.php-》setcookie b.php必须a.php b.php同目录同级才能使用
=============================================================================
PHP获取站点根目录
将下面的代码放在网站根目录下的一个文件中,以便在其它文件中引用。
路径方式:
define('BASE_PATH',str_replace('\\','/',realpath(dirname(__FILE__).'/'))."/");
echo BASE_PATH;
输出结果:E:/wwwroot/
url方式:
$PHP_SELF=$_SERVER['PHP_SELF'];
$url='http://'.$_SERVER['HTTP_HOST'].substr($PHP_SELF,0,strrpos($PHP_SELF,'/')+1);
echo $url;
输出结果:http://localhost/
其它的资料整理:
PHP取得站点根目录
echo $_SERVER['HTTP_HOST'];//当前请求的 Host: 头部的内容 即域名信信息
echo $_SERVER['PHP_SELF'];//当前正在执行脚本的文件相对网站根目录地址,就算该文件被其他文件引用也可以正确得到地址
echo $_SERVER['SCRIPT_NAME'];//当前正在执行脚本的文件相对网站根目录地址,但当该文件被其他文件引用时,只显示引用文件的相对地址,不显示该被引用脚本的相对地址。
echo $_SERVER['DOCUMENT_ROOT'];//网站相对服务器地址即网站的绝对路径名 #当前运行脚本所在的文档根目录。在服务器配置文件中定义
echo $_SERVER['SCRIPT_FILENAME'];//当前执行脚本的绝对路径名。
方法一:
今天讲了大致的站点目录结构,其中说到了怎样取得站点根目录,好多同学不是很理解,下面一步一步道来:
我的站点目录据对路径:D:\www\message2011,测试文件路径:D:\www\message2011\include\config.inc.php
在根目录下新建一个文件,也可以隔一层目录创建,就以上面为例,我要在config.inc.php中取得站点的根目录。
1、取得当前文件的路径:用魔术常量__FILE__。这里的路径包含了文件名,结果如下:
D:\www\message2011\include\config.inc.php
2、去掉上面路径的文件名,得到纯路径:dirname(__FILE__),结果如下:
D:\www\message2011\include
3、返回一层目录到根目录:realpath(dirname(__FILE__).'/../'),结果如下:
D:\www\message2011
4、把向左的”\“转化成向右的”/“:str_replace( '\\' , '/' , realpath(dirname(__FILE__).'/../')),结果如下:
D:/www/message2011
到这就是我们想要的站点根目录了,可以根据需求设定第三步返回目录层数,比如:返回2层就是 /../../,那么就会得到 D:\www\,以此类推。
方法二:
在global.inc 里定义根目录
define("APP_ROOT",dirname(__FILE__));
在任何PHP文件中可以引用该常量
require_once(APP_ROOT."/inc/head.php");
方法三:
<?php
$PHP_SELF=$_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$url='http://'.$_SERVER['HTTP_HOST'].substr($PHP_SELF,0,strrpos($PHP_SELF, '/')+1);
echo $url;
方法四:
$basepath=$_SERVER['PHP_SELF'];
$basepath=substr($basepath,0,strpos($basepath,"文件夹名称"));
echo $basepath;
如:你把文件保存为a.php并路径为:/wjj/wjj1/wjj2/a.php
上面的例子就写成:
$basepath=$_SERVER['PHP_SELF'];
$basepath=substr($basepath,0,strpos($basepath,"wjj1"));
echo $basepath;
方法五:
$basepath=$_SERVER['PHP_SELF'];
preg_match("/(\/)?([^\/]+)/",$basepath,$wjm);
echo $wjm[0];
注意,第二种方法我不太会,如文件路径为:/wjj/wjj1/wjj2/a.php,它只返回 /wjj 后面的/自己加!
?>