2015-05-27
这些是写给初级PHP程序员或者入门不久的同学的,老鸟可以飘过,欢迎补充和评论;接受合理意见与批评。
这些PHP的概念,有些刚开始比较难懂,很难理解,我把他们都列出来,希望能帮助一些人,在前进的路上少点荆棘。
1. variable variables(变量的变量)
variable_variables.php
View Code
<?php
$a = 'hello';
$hello = 'hello everyone';
echo $$a.'<br />';
$b = 'John';
$c = 'Mary';
$e = 'Joe';
$students = array('b','c','e');
echo ${$students[1]};
/*
foreach($students as $seat){
echo $$seat.'<br />';
}
$$var[1]
${$var[1]} for #1
*/
$a = 'hello';
将hello 赋值给 变量 $a, 于是 $$a = ${hello} = $hello = 'hello everyone';
如果对于 $$students[1], 这样会产生混乱,php的解释器可能无法理解,‘[’ 虽然有较高运算符,但结果可能无法输出。
好的写法是:${$students[1]} = ‘Mary’;
2. array's function(数组函数)
array_functions.php
View Code
<?php
echo '<p>shift & unshift </p>';
$numbers = array(1,2,3,4,5,6);
print_r($numbers);
echo '<br />';
// shifts first elemnt out of an array
// the index will reset
$a = array_shift($numbers);
echo 'a: '.$a.'<br />';
print_r($numbers);
// push element to the front of array
// returns the count of array and reset array index
$b = array_unshift($numbers, 'first');
echo '<br />b: '.$b.'<br />';
print_r($numbers);
echo '<hr />';
echo '<p>pop & push </p>';
// pop the last element out of array
$c = array_pop($numbers);
print_r($numbers);
echo '<br />';
// push the element to the last of array
$d = array_push($numbers, 'last');
echo 'd: '.$d.'<br />';
print_r($numbers);
3. dates and times (时间和日期)
有3种方法可以创建一个unix time(从1970/1/1 到现在的秒数)
time(); 返回当前的时间戳
mktime($hr, $min, $sec, $month, $day, $year); mktime(6,30,0,5,22,2012) 返回2012 5/22 6:30:00 的时间戳
strtotime($string); strtotime("+1 day") 返回明天这个时候的时间戳 更多 'last Monday' 'lasy Year'
----------------------------------------------------------
checkdate($month, $day, $year); 验证一个日期是否为真 checkdate(5,32,2012) ? 'true' : 'false'; // return false
得到了时间戳后,我们需要对它进行转化为可读的,如2012/5/22
我们有2种方法 date($format, $timestamp) ; strftime($format [,$timestamp])
推荐用第2种,strftime("%Y-%m-%d %H:%M:%S"); // return 2012-05-22 15:46:40
5. server variables (服务器和执行环境信息)
$_SERVER
server_variables.php
View Code
<?php
echo 'SERVER details:<br />';
echo 'SERVER_NAME: '.$_SERVER['SERVER_NAME'].'<br />';
echo 'SERVER_ADD: '.$_SERVER['SERVER_ADDR'].'<br />';
echo 'SERVER_PORT: '.$_SERVER['SERVER_PORT'].'<br />';
echo 'DOCUMENT_ROOT: '.$_SERVER['DOCUMENT_ROOT'].'<br />';
echo '<br />';
echo 'Page details:<br />';
echo 'REMOTE_ADDR: '.$_SERVER['REMOTE_ADDR'].'<br />';
echo 'REMORT_PORT: '.$_SERVER['REMOTE_PORT'].'<br />';
echo 'REQUEST_URI: '.$_SERVER['REQUEST_URI'].'<br />';
echo 'QUERY_STRING: '.$_SERVER['QUERY_STRING'].'<br />';
echo 'REQUEST_METHOD: '.$_SERVER['REQUEST_METHOD'].'<br />';
echo 'REQUEST_TIME: '.$_SERVER['REQUEST_TIME'].'<br />';
echo 'HTTP_USER_AGENT: '.$_SERVER['HTTP_USER_AGENT'].'<br />';
echo '<br />';
6.variable_scope(变量的作用域 global static)
static_variables.php
View Code
<?php
function test()
{
$a = 0;
echo $a;
$a++;
}
test();
echo '<br />';
test();
echo '<br />';
test();
echo '<br />';
echo '<hr />';
function test1()
{
static $a = 0;
echo $a;
$a++;
}
test1();
echo '<br />';
test1();
echo '<br />';
test1();
echo '<br />';
test() 函数中的变量 $a 没有保存 $a++ 的结果 , 重复调用test() 并没有使 $a 的值增加
而test1() 函数中 变量 $a 申明了 staic $a = 0, 为静态变量。
引用:A static variable exists only in a local function scope, but it does not lose its value when program execution leaves this scope.
一个静态变量 只能存在于本地的函数作用域内 也就是test1() 函数体内, 但是当程序离开这个test1() 作用域时,静态变量不会失去它的值,也就是 $a 变量会增加 1; 当重新调用 test1() 时,$a = 1;
global_variables.php
View Code
<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
echo '<hr />';
$a = 1;
$b = 2;
function Sum1()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Sum1();
echo $b;
引用:In PHP global variables must be declared global inside a function if they are going to be used in that function
如果这些变量将在函数中使用,全局变量必须在使用的那个函数中进行定义。 这样可以避免很多麻烦。
7.reference(引用)
variable_reference.php
View Code
<?php
$a = 'arist';
$b = $a;
$b = 'ming';
echo "My name is:{$a}. But my mother call me {$b}.<br />";
echo '<hr />';
$a = 'arist';
$b = &$a;
$b = 'ming';
echo "My name is:{$a}. And my mother call me {$b}.<br />";
这个概念可以这样理解,我妈叫我明明,但是我的领导会叫我小言;不管是明明或者是小言,都是我。
'&' 而这个就是不同的人叫我们的别名的方法 即引用,相当于 $a = {我,或者内存中的值} , $b = {领导,妈妈,或者变量}
通过 & , $b指向了$a 在内存中唯一也是相同的值。 所以不管你领导叫你什么,或者你妈叫你什么,你都是你。只是称呼不同。
所以通过引用后, 我们改变$b的值,同时也改变了$a的值。
8. pass reference variable to function(传递引用参数给函数)
<?php
function ref_test(&$var){
return $var *= 2;
}
$a = 10;
ref_test($a);
echo $a;
当我们按引用传递参数给函数时,我们传递地不是变量的副本(copy) ,而是真实的值,
所以当我们调用函数ref_test($a)的时候已经改变了 $a 的值, 所以最后 $a = 20;
9. reference function return value(引用函数的返回值)
reference_function_return_value.php
<?php
function &increment(){
static $var = 0;
$var++;
return $var;
}
$a =& increment(); // 1
increment(); // 2
$a++; //3
increment(); // 4
echo "a: {$a}";
首先申明一个引用函数,在函数体内,申明一个静态变量 $var, 可以保存增加的值;
$a =& increment(); 这条语句是 变量$a 引用 函数increment() 的返回值,
和前面的引用变量一样, 你可以把increment()函数, 看作是一个变量; 这样就变为 $a = & $b;
所以increment() 和 $a 都指向同一个值,改变任何一个,都能改变同一个值。
摘自 warcraft
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
04-12
6
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
PHP中include和require区别之我见
09-05
将视频设置为Android手机开机动画的教程
2014-12-11
php递归返回值的问题
2014-09-05
常用dos命令及语法
2014-09-27
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
IcePHP框架中的快速后台中的通用CRUD功能框架
2014-09-05
java中的info是什么意思
2022-03-24
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
学ug编程如何快速入门?
2022-03-17
PHP数组函数array
2014-09-05
火影忍者国际版手游下载v1.71.72.8 安卓最新版本
角色扮演 1.86G
下载绿茵信仰游戏最新版下载v3.8.0 安卓版
体育运动 1.80G
下载奇妙梦幻城堡完整版下载v9.87.00.00 安卓版
其它手游 105.1M
下载labo积木汽车2儿童游戏下载v1.1.422 安卓版
其它手游 131.5M
下载奇妙环游世界宝宝巴士游戏下载v9.87.00.00 安卓版
其它手游 114.2M
下载全民农场游戏下载v1.26.30 安卓正版
经营养成 887.0M
下载哈利波特魔法觉醒网易版下载v1.20.220280 安卓版
其它手游 1.89G
下载宝可梦大集结体验服免费下载v1.2.1.1 安卓手机内测服
其它手游 1.90G
下载宝可梦大集结国服下载v1.2.1.1 官方安卓手机版
下载
问道果盘版本渠道服下载v2.139.0506 安卓客户端
下载
斗破苍穹异火重燃官方腾讯版下载v0.0.0.352 安卓最新版
下载
战舰帝国折扣平台下载v7.1.86 安卓版
下载
宝可梦大集结腾讯版国服下载v1.3.1.1 安卓官方正版
下载
大帝国征服者手游百度版下载v5.670 安卓版
下载
漫威对决最新版下载v1.0.125569 安卓版
下载
雪糕工厂宝宝巴士游戏下载v9.87.13.01 官方安卓版
下载