深入理解PHP中的global

一、实现原理
在PHP的函数中,global语法是比较常见的,大家一定都知道一旦在函数中global了某个外部变量后,这个变量就可以在这个函数中使用了,但是也有不少网友不知道这是一个什么实现原理。现在上一个例子,大家一看就知道了:

代码如下:

$globalStr = '.net';

function globalTest(){

global $globalStr;

$globalStr = 'jb51'.$globalStr;

unset($globalStr);

}

globalTest();

echo $globalStr; //输入: jb51.net

从这个例子看出global了一个变量就等于传递了一个引用进来。这样理解的话,下面的代码输出结果就不难理解了。

二、php中global的作用 

代码如下:

global $var1,$var2;

就是外部变量的同名引用,变量本身的作用范围仍然在函数体内。改变这些变量的值,外部的同名变量自然也改变。但一旦用了&,那么变量将不再是同名引用。

代码如下:

<?php
$var1 = 1;
$var2 = 2;
function test()
{
    global $var1,$var2; // 作用范围在函数体内
    $var1 = 3;
}
test();
echo $var1;
?>

结果是 3。因为是同名引用。
 

代码如下:

<?
$var1 = 1;
$var2 = 2;
function test()
{
    global $var1,$var2;
    $var1 = &var2;
}
test();
echo $var1
?>

结果是1。因为在函数内的$var1经过赋值后与$var2具有相同的引用了。进一步看下面的代码。
 

代码如下:

<?php 
$var1 = 1;   
$var2 = 2;   
function test_global()   
{   
    global $var1,$var2;   
    $var1=&$var2;   
    $var1=7;   
}
test_global();   
echo $var1;   
echo $var2;
?>

结果是1和7。因为在函数内的$var1与$var2具有相同的引用。因此改变了$var1的值,$var2的值夜作了改变。

时间: 2014-08-18

PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)

一.数组遍历的3个方法介绍 1. foreach() foreach()是一个用来遍历数组中数据的最简单有效的方法. #example1: 复制代码 代码如下: <?php $colors= array('red','blue','green','yellow'); foreach ($colorsas$color){ echo "Do you like $color? <br />"; } ?> 显示结果: Do you like red? Do you li

PHP采用自定义函数实现遍历目录下所有文件的方法

目录的遍历是PHP程序设计中经常会用到的一个功能,很多PHP项目都有这一功能模块.今天本文就来实例解析一下PHP采用自定义函数实现遍历目录下所有文件的方法.具体方法如下: 方法一:使用readir()遍历目录 实现代码如下: function listDir($dir) { if(is_dir($dir)) { if($handle = opendir($dir)) { while($file = readdir($handle)) { if($file != '.' && $file !

PHP 数据库树的遍历方法

代码如下: 复制代码 代码如下: <?php session_start(); define ('P_S', PATH_SEPARATOR); define ('ROOT', "./"); set_include_path(ROOT .P_S .'Zend' .P_S .ROOT.get_include_path()); //加载ZEND 框架 require_once ROOT.'Zend/Loader.php'; require_once 'usercheck.php';//

php遍历数组的4种方法总结

在php中可以用来遍历数组的函数有很多,如有:for语句.list.each.foreach这四个函数,这也是在php中遍历数组的几个主要的函数,下面我来给大家介绍. foreach遍历数组 我们在运用数组时,常常要遍历数组并获得各个键或者元素值,php提供了一些专门遍历数组的函数.这里先介绍foreach遍历数组函数的用法. 结构形式: 复制代码 代码如下: foreach ( array_expression as $value ) statement /* array_expression

PHP循环遍历数组的3种方法list()、each()和while总结

①each()函数 each()函数需要传递一个数组作为参数,返回数组中当前元素的键/值对,并向后移动数组指针到下一个元素的位置.键/值对被返回带有4个元素的关联和索引混合的数组,键名分别为0.1.key和value.其中键名0和key对应的值是一样的,是数组元素的键名,1和value则包含有数组元素的值.如果内部指针越过了数组的末端,则each()返回FALSE.each()函数的使用如下所示: 复制代码 代码如下: <?php $contact = array("ID" =&

PHP中使用glob函数实现一句话删除某个目录下的所有文件

收集自网上: 复制代码 代码如下: array_map('unlink',glob('*')); 抛砖引玉而已,有很多朋友可能还不知道有glob这个函数吧.更多的用法看手册吧. PHP glob() 函数 定义和用法 glob() 函数返回匹配指定模式的文件名或目录. 该函数返回一个包含有匹配文件 / 目录的数组.如果出错返回 false. 语法 复制代码 代码如下: glob(pattern,flags) 参数 描述 file 必需.规定检索模式. size 可选.规定特殊的设定. GLOB_

PHP 数组遍历方法大全(foreach,list,each)

在PHP中数组分为两类: 数字索引数组和关联数组. 其中数字索引数组和C语言中的数组一样,下标是为0,1,2- 而关联数组下标可能是任意类型,与其它语言中的hash,map等结构相似. 下面介绍PHP中遍历关联数组的三种方法: 方法1:foreach 复制代码 代码如下: <?php $sports = array( 'football' => 'good', 'swimming' => 'very well', 'running' => 'not good'); foreach

PHP遍历数组的几种方法

PHP中遍历数组有三种常用的方法: 一.使用for语句循环遍历数组: 二.使用foreach语句遍历数组: 三.联合使用list().each()和while循环遍历数组. 这三种方法中效率最高的是使用foreach语句遍历数组.从PHP4开始就引入了foreach结构,是PHP中专门为遍历数组而设计的语句,推荐大家使用.先分别介绍这几种方法. 一.使用for语句循环遍历数组 值得大家注意的是使用for语句循环遍历数组要求遍历的数组必须是索引数组.PHP中不仅有关联数组而且还有索引数组,所以PH

php使用glob函数快速查询指定目录文件的方法

本文实例讲述了php使用glob函数快速查询指定目录文件的方法.分享给大家供大家参考.具体如下: php搜索当前目录所有文件,代码如下: 复制代码 代码如下: $array = glob('*.*'); print_r($array );    /* Array (     [0] => 1.php     [1] => 10.php     [2] => 11.php     [3] => 2.asp     [4] => 3.asp     [5] => 4.asp

PHP使用glob函数遍历目录或文件夹的方法

本文实例讲述了PHP使用glob函数遍历目录或文件夹的方法.分享给大家供大家参考.具体分析如下: 一说到php遍历目录我们很多朋友会想到是opendir与readdir,这样就可以遍历目录并显示文件,但在php中有一个更简洁的遍历目录的函数glob估计很少有人知道此函数,不过我觉得比起opendir与readdir要简单多了. PHP glob函数的使用:glob-寻找与模式匹配的文件路径. 例子,代码如下: 复制代码 代码如下: <?php $fileList=glob('*.*'); for

php遍历目录与文件夹的多种方法详解

遍历目录或遍历目录下指定类型的文件,这是每一个童鞋在写程序的时候难免会用到的.PHP本身也提供了很多灰常有用的函数,正确地使用它们,不会有错滴.下面就我个人学习过程中的一些总结,希望对想学PHP的童鞋有所帮助.本函数可以列出指定目录下所有的文件(包括子目录下的) 复制代码 代码如下: function getfiles($path){ foreach(scandir($path) as $afile){if($afile=='.'||$afile=='..') continue; if(is_d

php使用glob函数遍历文件和目录详解

php glob()函数返回匹配指定模式的文件名或目录.因此我们可以使用glob函数来查找文件,也可以实现目录的遍历. 函数说明:array glob ( string $pattern [, int $flags ] ) 功能:寻找与模式匹配的文件路径,返回包含匹配文件(目录)的数组(注:被检查的文件必须是服务器系统的,不能用于远程文件) 参数说明:第一个参数:匹配模式:第二个可选参数: GLOB_MARK - 在每个返回的项目中加一个斜线 GLOB_NOSORT - 按照文件在目录中出现的原

C++ 遍历目录下文件简单实现实例

C++ 遍历目录下文件 function:遍历目录下所有文件,返回文件总数,子文件夹总数(修改一下可以获得全部文件名等). 实例代码: #include "stdlib.h" #include "direct.h" #include "string.h" #include "io.h" #include "stdio.h" #include "iostream" using namesp

Android 遍历SDCARD的文件夹并显示目录信息

Android 遍历SDCARD的文件夹并显示目录信息 private String mResult = new String(); private String[] mFileList = null; 1).显示所有文件/ File flist = new File("/mnt/sdcard"); mFileList = flist.list(); for(String str: mFileList){ mResult += str; mResult += "\n"

php遍历、读取文件夹中图片并分页显示图片的方法

本文实例讲述了php遍历.读取文件夹中图片并分页显示图片的方法.分享给大家供大家参考,具体如下: 引子:我的网站图片目录images下有若干图片如1.jpg.2.jpg.3.jpg.--.n.jpg.1.gif.2.gif.3.gif.--.n.gif,要求在该images目录下建一个index.php文件,使得该文件分页显示images目录下的所有图片. 下面是我想到的办法.不知道有没有更好的办法.呵呵...在图片文件夹images下面建一个index.php文件,内容如下: <?php ec

php计算指定目录下文件占用空间的方法

本文实例讲述了php计算指定目录下文件占用空间的方法.分享给大家供大家参考.具体分析如下: php中可以通过 RecursiveDirectoryIterator 扩展 DirectoryIterator的getChildren() 方法提供访问子目录中的每一个元素的方法,下面的代码通过遍历访问目录下的所有文件,获取他们暂用的空间. <?php $dir = new RecursiveDirectoryIterator('C:\wamp'); $totalSize = 0; foreach (n

Asp.Net程序目录下文件夹或文件操作导致Session失效的解决方案

1.配置web.config <system.web> <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="

asp.net实现访问局域网共享目录下文件的解决方法

本文以实例讲述了asp.net实现访问局域网共享目录下文件的解决方法,完整代码如下所示: using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls;

asp遍历站点所有文件夹的代码

<!-- 遍历站点所有文件夹 -->   <style>   <!--   body{font-size:12px;}   -->   </style>   <script language="vbscript">   <!--   sub fsubmit()   form1.submit   End sub   -->   </script>   <form name="form1&q