当前位置:  编程技术>php
本页文章导读:
    ▪有关php全局变量适用范围的分析      有关php全局变量适用范围的分析,提供了几个例子,供大家参考。 介绍:在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内.........
    ▪php与mysql实现的无限级分类|树型显示分类的关系          php与mysql实现的无限级分类|树型显示分类的关系,有需要的朋友可以参考下。     无限级分类,主要是通过储存上级分类的id以及分类路径来实现。由于数据的结构简单,所以要将分类.........
    ▪通过实例学习php正则表达式之正则处理函数(preg_match,preg_match_all,preg_replace,preg_split)      学习了正则表达式的基础语法,包括了定界符、原子、元字符和模式修正符。实际上正则表达式想要起作用的话,就必须借用正则表达式处理函数。 和正则表达式一样,正则表达式处理函数.........

[1]有关php全局变量适用范围的分析
    来源: 互联网  发布时间: 2013-12-24

有关php全局变量适用范围的分析,提供了几个例子,供大家参考。

介绍:在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。
 

代码如下:
<?php
$a = 1 ;
include 'b.inc' ;
?>

这里变量 $a 将会在包含文件 b.inc 中生效。
但是,在用户自定义函数中,一个局部函数范围将被引入。
任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。
 

代码如下:
<?php
$a = 1 ; /* global scope */
function Test ()
{
echo $a ; /* reference to local scope variable */
}
Test ();
?>

这个脚本不会有任何输出,因为 echo 语句引用了一个局部版本的变量 $a ,而且在这个范围内,它并没有被赋值。你可能注意到 PHP 的全局变量和 C 语言有一点点不同
PHP 中全局变量在函数中使用时必须申明为全局(global关键字)。
 

代码如下:
<?php
$a = 1 ;
$b = 2 ;
function Sum ()
{
global $a , $b ;
$b = $a + $b ;
}
Sum ();
echo $b ;
?>
 

以上脚本将输出:
“3”。


    
[2]php与mysql实现的无限级分类|树型显示分类的关系
    来源: 互联网  发布时间: 2013-12-24

    php与mysql实现的无限级分类|树型显示分类的关系,有需要的朋友可以参考下。

    无限级分类,主要是通过储存上级分类的id以及分类路径来实现。由于数据的结构简单,所以要将分类的关系由树状显示,我只能想到用递归的方式给于实现,下面是分类数据表结构和自己写的一个树状显示函数。

表结构:id字段为分类标识,name字段为分类名,father_id字段为所属父分类的id,path字段为分类路径(储存该分类祖先的集合),isdir判断是否是目录(1为是,0为否)。

显示函数:
 

代码如下:
<?php
//$count为分类等级
sort_list($str,$fatherid,$count)
{
$rs = $this->sql->re_datas("select * from sort where father_id = fatherid");
$num = $this->sql->sql_numrows();
$i=0;
$n = 1;
while(isset()($rs[$i]))
{
$name = "";
for($n = 1 ; $n < $count ; $n++)
{
$name.="│ ";
}
if($i+1==$num)
{
$name.="└─".$rs[$i][name];
}
else
{
$name.="├─".$rs[$i][name];
}
if($rs[$i][isdir])
{
$str.="<span >".$name."</span>";
}
else
{
$str.=$name";
}
$temp = $count+1;
$str = $this->sort_list($str,$rs[$i][id],$temp);
$i++;
}
return $str;
}
?>
 

其中$this->sql对象为sql操作类对象,re_datas()函数返回查到的数组,sql_numrows()函数返回查询到的数目
调用方法:$sort_list = sort_list($sort_list,0,1);

您可能感兴趣的文章:
php将地区分类排序的算法
使用php数组实现的无限分类(不使用数据库与用递归)
php写的一个递归实现无限分类生成下拉列表的函数
对ecshop中的无限级分类的分析
php用递归方法实现无限级分类的代码
php实现的无极分类(递归)的代码


    
[3]通过实例学习php正则表达式之正则处理函数(preg_match,preg_match_all,preg_replace,preg_split)
    来源: 互联网  发布时间: 2013-12-24

学习了正则表达式的基础语法,包括了定界符、原子、元字符和模式修正符。实际上正则表达式想要起作用的话,就必须借用正则表达式处理函数。

和正则表达式一样,正则表达式处理函数不能够独立使用,而这必须相结合,才能够完成特定的功能。在前面我们也说过,基于perl的正则表达式要快于POXIS正则表达式处理函数,所以我们只介绍以preg开头的基于perl的正则表达式。注意:在能偶使用字符串函数处理的时候,就不要使用正则表达式来处理字符串,因为字符串处理函数更快。

来看一些常用的正则表达式处理函数。

1,preg_match()函数。
函数preg_match()执行一个正则表达式匹配,其定义如下:
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

实际上就是搜索subject中匹配pattern的部分, 以保存在数组matches中。
例子:
 

代码如下:
<?php
$pattern = '/<b>.*?<\/b>/';
$string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>dsadsadas';
if (preg_match($pattern, $string, $arr)) {
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>";
print_r($arr);
} else {
echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>";
}
?>

2,preg_match_all()函数。
函数preg_match_all()函数执行一个全局正则表达式匹配,其定义和preg_match()函数一致,只不过匹配了全部结果。
例子:
 

代码如下:
<?php
$pattern = '/<b>.*?<\/b>/';
$string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>dsadsadas';
if (preg_match_all($pattern, $string, $arr)) {
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>";
print_r($arr);
} else {
echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>";
}
?>
 

依旧是上面的示例(只换了正则处理函数为preg_match_all()),但是匹配的结果数组内容不一样了。

3, preg_replace()函数
函数preg_replace()执行一个正则表达式替换,其定义如下:
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

实际上就是搜索subject中匹配pattern的部分,以replacement进行替换。其中limit指的是每个模式在每个subject上进行替换的最大次数。默认是 -1(无限)。如果指定count,将会被填充为完成的替换次数。

注意:
A,如果subject是一个数组, preg_replace()返回一个数组, 其他情况下返回一个字符串。
B,如果匹配被查找到, 替换后的subject被返回, 其他情况下返回没有改变的subject。如果发生错误, 返回NULL 。
C,子模式可以应用到参数replacement中,使用方式为\n或者${n}。(在正则表达式的模式中我们只能使用\n的形式来获取已经匹配的子模式,切记!)
D,如果使用模式修正符e,则参数replacement中可以解析函数。(在其它的正则表达式处理函数中,模式修正符e均被忽略!)

来看一个综合点的例子:
 

代码如下:
<?php
$pattern = '/(php)|(mysql)/e';
$string = '这个字符串中的php和mysql被替换成大写的了!';
$result = preg_replace($pattern, 'strtoupper()("${1}\2")', $string, -1, $count);
echo $result.'<br>';
echo $count;
?>

上例中,我们使用了模式修正符e,这样的话strtoupper()函数就可以当作字符串被解析,这就是模式修正符e的作用!而参数${1}和\2分别是子模式1和子模式2。上例的作用就是将字符串$string中匹配到的子模式php和mysql替换成大写字母!

4,preg_split()函数。
preg_split执行一个正则表达式分隔字符串。其定义如下:
array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )

实际上就是将subject按照pattern分割,返回分割后的数组。其中,limit将限制分隔得到的子串最多只有limit个, 返回的最后一个子串将包含所有剩余部分.limit值为-1, 0或null时都代表"不限制"。

例子:
 

代码如下:
<?php
$pattern = '/<p>(.*?)<\/p>/';
$string = '这个字符串中的<p>php</p>和<p>mysql</p>被分割了!';
$result = preg_split($pattern, $string, -1, PREG_SPLIT_DELIM_CAPTURE);
print_r($result);
?>

上例中,我们使用了常量PREG_SPLIT_DELIM_CAPTURE设 置返回结果中包含子模式(如果设置为PREG_SPLIT_NO_EMPTY,preg_split()将进返回分隔后的非空部分。)我们如果把上例中正 则表达式的括号去掉,则结果中不再包含php和mysql这两个匹配成功的子模式。

常用的正则表达式处理函数介绍完了,以上的例子可能会难一些,但希望大家认真的试验并体会一下,以提高对这方面知识的理解。


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3