php 定义全局变量,静态变量,局部变量定义实例

 更新时间:2016年11月25日 15:55  点击:1656

 //$globals 数组
 
 function testfunction() {
  echo $globals["php_self"];
 }
 testfunction(); 
 
 // 本程序使用全局定义
 function testfunction() {
  global $s;
  echo $s;
 }
 $s='this is www.111cn.net';
 testfunction();
 
 // 静态变量的例子
 function testfunction() {
  static $mystr;
  $mystr.="111cn.net";
  echo $mystr."<br> ";
 }
 testfunction(); // 111cn.net
 testfunction(); // 111cn.net111cn.net
 testfunction(); // 111cn.net111cn.net111cn.net
 
 // 普通变量
 function testfunction() {
  $mystr.="www.111cn.net";
  echo $mystr."<br> ";
 }
 testfunction(); // www.111cn.net

//下面我们来简单的介绍一下php中的超级全局变量有那些

 //$GLOBALS 包含一个引用指向每个当前脚本的全局范围内有效的变量,实例
 
  $GLOBALS['site'];
 
 //$_SERVER 变量由 web 服务器设定或者直接与当前脚本的执行环境相关联
 
  echo $_SERVER['DOCUMENT_ROOT'];
 
 //$_GET URL 请求提交至脚本的变量
 
  echo $_GET['ac']
  
 //$_POST HTTP POST 方法提交至脚本的变量
  
  echo $_POST['ab']
  
 //$_COOKIE HTTP Cookies 方法提交至脚本的变量
  
  setcookie('load','www.111cn.net',time()+3600*24,'/','192.168.0.110');
  $cookis = $_COOKIE['loadDomain'];
  
 //$_FILES HTTP POST 文件上传而提交至脚本的变量
  
  <form name="form1" enctype="multipart/form-data" method="post" action="">
    <input type="file" name="file">
    <input type="submit" name="Submit" value="提交">
  </form>
  
  输出值:
  print_r( $_FILES['file'] );

  Array
  (
   [name] => 45457.jpg
   [type] => image/pjpeg
   [tmp_name] => C:WINDOWSTempphpD7.tmp
   [error] => 0
   [size] => 10974
  )
  
 //$_ENV 不推荐使用
 //$_REQUEST 由GET,POST 和 COOKIE 机制提交至脚本的变量,因此该数组并不安全并且效率不高。
  
  $_REQUEST['bb'] //会自动提交过来的数据是post,get形式

我们用intval来判断用户输入的信息是否为数字,这个可以自动转换成数字,如果是0,返回的值也是假的。本站原创教程

/*
在php判断用户输入的是否为数字型或是否为数字型字符串,我们会用到is_numeric与intval函数来处理。
*/

$num  = 1;
$num1 ='1';
$str  ='abc';


if( is_numeric( $num ) )
{
 echo $num.'是数字型';
}
//1是数字型

if( is_numeric( $num1) )
{
 echo $num1.'是数字型';
}
else
{
 echo $num1.'不是数字型';
}
//1是数字型
/*
 第二个实例为看还是数字型呢,这要看php是那类型的语言了,关键是php是弱语言型,所以就会自动把数字型字符转换成数字了。
*/

if( intval( $str ) )
{
 echo $str.'是数字';
}
else
{
 echo $str.'不是数字';
}
//acd不是数字

if( intval( $num1 ) )
{
 echo $num1.'是数字';
}
else
{
 echo $num1.'不是数字';
}

//1是数字

//转载注明来源www.111cn.net

今天我们要为php学者提供一款php 网上在线调查系统源码,这是一款从html到php的简单的应用实例,就是关于在线投票系统代码。

html代码


 

 代码如下 复制代码

<html>
<head>
<title>调查表</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF">

<?php
// 定义显示表单函数
function display_form() {

global $PHP_SELF;

?>
<FORM action="<?php echo $PHP_SELF; ?>"METHOD=post>
名字: <INPUT TYPE=TEXT NAME="name"><BR>
单项选择:
<INPUT TYPE=RADIO NAME="first" VALUE="我很笨">我很聪明
<INPUT TYPE=RADIO NAME="first" VALUE="我非常笨">我很笨
<INPUT TYPE=RADIO NAME="first" VALUE="我简直就是个傻冒"> 我简直就是个傻冒 <br>

多项选择:
<INPUT TYPE=CHECKBOX NAME="second[]" VALUE="我喜欢打蓝球">我喜欢打蓝球
<INPUT TYPE=CHECKBOX NAME="second[]" VALUE="我喜欢游泳">我喜欢游泳
<INPUT TYPE=CHECKBOX NAME="second[]" VALUE="我喜欢跳舞">我喜欢跳舞
<INPUT TYPE=CHECKBOX NAME="second[]" VALUE="我喜欢爬山">我喜欢爬山
<INPUT TYPE=HIDDEN NAME="stage" VALUE= "results"><p>
<INPUT TYPE=SUBMIT VALUE= "谢谢"></p>
</FORM>

<?php
}
?>

//程序开始

 代码如下 复制代码

<?php
// 定义处理表单函数
function process_form()
{
global $name ;
global $first;
global $second;

if ($first == '我很笨') {
 $first_message = '你不笨。';
}
elseif ($first == '我很聪明') {
 $first_message = '你不聪明。';
}
else {
 $first_message = '你简直就象是一个聪明的人了。';
}

$favorite_second = count($second);
if ($favorite_second <= 1)

 $second_message = '但你做错事了,忏悔吧!';
}
elseif ($favorite_second > 1 && $favorite_second < 4)
{
 $second_message = '你是只爱运动的的猩猩。';
}
else {
 $second_message = '你运动的太多了,对猩猩来讲已经过量:(';
}

echo "这是一项针对猩猩的测试:<br><br>";
echo "你好! 你的名字叫:$name. <br><br>";
echo "你的测验结果是。。。。。$first_message $second_message";
}
?>

<?php
if (empty($stage)) { display_form(); }
else { process_form(); }
?>

</body>
</html>

投票与在线调查系统实例原理就是做一个单选或选框,收集用户的信息进来分罢了。

Linux下Memcache服务器端的安装
服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 。
下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-1.3。(如果你的系统已经安装了libevent,可以不用安装)
官网:http://www.monkey.org/~provos/libevent/
下载:http://www.monkey.org/~provos/libevent-1.3.tar.gz

用wget指令直接下载这两个东西.下载回源文件后。
1.先安装libevent。这个东西在配置时需要指定一个安装路径,即./configure –prefix=/usr;然后make;然后make install;
2.再安装memcached,只是需要在配置时需要指定libevent的安装路径即./configure –with-libevent=/usr;然后make;然后make install;
这样就完成了Linux下Memcache服务器端的安装。详细的方法如下:


1.分别把memcached和libevent下载回来,放到 /tmp 目录下:
# cd /tmp
# wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz
# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz

2.先安装libevent:
# tar zxvf libevent-1.2.tar.gz
# cd libevent-1.2
# ./configure –prefix=/usr
# make
# make install

3.测试libevent是否安装成功:
# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
-rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a
-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
还不错,都安装上了。

4.安装memcached,同时需要安装中指定libevent的安装位置:
# cd /tmp
# tar zxvf memcached-1.2.0.tar.gz
# cd memcached-1.2.0
# ./configure –with-libevent=/usr
# make
# make install
如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。
安装完成后会把memcached放到 /usr/local/bin/memcached ,

5.测试是否成功安装memcached:
# ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug

安装Memcache的PHP扩展
1.在http://pecl.php教程.net/package/memcache 选择相应想要下载的memcache版本。
2.安装PHP的memcache扩展

tar vxzf memcache-2.2.1.tgz
cd memcache-2.2.1
/usr/local/php/bin/phpize
./configure –enable-memcache –with-php-config=/usr/local/php/bin/php-config –with-zlib-dir
make
make install

3.上述安装完后会有类似这样的提示:

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/

4.把php.ini中的extension_dir = “./”修改为

extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/”

5.添加一行来载入memcache扩展:extension=memcache.so

memcached的基本设置:
1.启动Memcache的服务器端:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid

-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,

2.如果要结束Memcache进程,执行:

# kill `cat /tmp/memcached.pid`

也可以启动多个守护进程,不过端口不能重复。

3.重启apache,service httpd restart

Memcache环境测试:
运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把!
< ?php
$mem = new Memcache;
$mem->connect(”127.0.0.1″, 11211);
$mem->set('key', ‘This is a test!', 0, 60);
$val = $mem->get('key');
echo $val;
?>

在php mysql的web应用中我们经常会碰到上千万级的数据量,为了减轻服务器的负载我们经常会使用第三个工具来减压,下我们为你提供一款Memcache php提高mysql负载有效方法哦。

Memcache的理由:
1.Web Server(Lighttpd、Nginx据说都比Apache效率高好多,大家可以试用下)对CPU要求高,对内存要求低;而Memcached Server是对CPU要求低,对内存要求高,所以可以搭配使用。在对前端的Web Server上安装Memcached Server是可行的。
2.金钱金钱金钱,最少的付出,获得最大的收益。
3.简单简单简单,对于一个架构合理的系统来说,添加Memcache的支持可能只是一个批量处理文件的过程

Discuz!使用Memcache
1.在config.inc.php中增加

 代码如下 复制代码

$memcachehost = '127.0.0.1';
$memcacheport = 11211;
$memcachelife = 60;
2.在include/common.inc.php中

$mem = new Memcache;
$mem->connect($memcachehost, $memcacheport);
3.修改include/db_mysql.class.php中的fetch_array、query这两个方法,并添加query_mysql方法,代码如下:

function fetch_array($query, $result_type = MYSQL_ASSOC) {
return is_resource($query) ? mysql_fetch_array($query, $result_type) : $query[0];
}

function query_memcache($sql, $type = '') {
global $mem,$memcachelife;

$key = md5($sql);
if(!($query = $mem->get($key))) {
$query = $this->query($sql, $type);
while($item = $this->fetch_array($query)) {
$res[] = $item;
}
$query = $res;
$mem->set($key, $query , 0, $memcachelife);
}
return $query;
}

function query($sql, $type = '') {
global $debug, $discuz_starttime, $sqldebug, $sqlspenttimes;

$func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query') ?
'mysql_unbuffered_query' : 'mysql_query';
if(!($query = $func($sql, $this->link)) && $type != 'SILENT') {
$this->halt('MySQL Query Error', $sql);
}

if(substr($sql, 0, 6) == 'SELECT') {
echo '<font color="red">Cache SQL</font>:<font color="green">'.$sql.'</font><br /><br />';
} else {
echo '<font color="red">Flash SQL</font>:<font color="green">'.$sql.'</font><br /><br />';
}

$this->querynum++;
return $query;
}

4.将需要使用Memcache缓存的SQL查询的代码由

$db->query(
修改为

 代码如下 复制代码
$db->query_memcache(


注意并将

 代码如下 复制代码
while($post = $db->fetch_array($query)) {


修改为

 代码如下 复制代码
foreach($query as $post) {


没有while的$db->fetch_array可以不用修改。

下面代码有用得着的就拿去:

preg_replace("/while([$](w+)s*=s*[$]db->fetch_array([$]query))/is", "foreach($query as $\1)", $file);
回头放出个小工具批量替换下就可以了。
在EditPlus中可以这样替换:while([$](.*) = [$]db->fetch_array([$]query))替换为foreach($query as $)

[!--infotagslink--]

相关文章

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

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • 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
  • 详解ES6实现类的私有变量的几种写法

    这篇文章主要介绍了详解ES6实现类的私有变量的几种写法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10
  • C#不同类型的成员变量(字段)的默认值介绍

    虽然C#编译器为每个类型都设置了默认类型,但作为面向对象的设计原则,我们还是需要对变量进行正确的初始化。实际上这也是C#推荐的做法...2020-06-25
  • python 实现循环定义、赋值多个变量的操作

    这篇文章主要介绍了python 实现循环定义、赋值多个变量的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • 在JS中如何使用css变量详解

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

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

    这篇文章主要介绍了C++变量,常量,数组和字符串,是C++入门学习中的基础知识,需要的朋友可以参考下,希望能够给你带来帮助...2021-10-21
  • 轻松理解Javascript变量的相关问题

    这篇文章主要给大家介绍了关于Javascript变量的相关问题,文中给出了详细的介绍和示例代码,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。...2017-01-23
  • C#设置与获取环境变量的方法详解

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

    这篇文章主要介绍了node.js 全局变量的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-15
  • 基于条件变量的消息队列 说明介绍

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

    这篇文章主要介绍了Perl中的特殊内置变量详细介绍,需要的朋友可以参考下...2020-06-29
  • C#静态变量与实例变量实例分析

    这篇文章主要介绍了C#静态变量与实例变量,是深入掌握PHP程序设计所必须掌握的重要概念,需要的朋友可以参考下...2020-06-25
  • Lua判断变量是否为数字、字符串是否可以转换为数字等

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