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
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
2014-09-05
PHP中的(++i)前缀自增 和 (i++)后缀自增
2014-09-05
php递归返回值的问题
2014-09-05
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
2017-04-12
常用dos命令及语法
2014-09-27
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
php 做权限管理
2014-09-05
nginx,php日志分割
2014-09-05
解决ThinkPHP在Nginx下无法使用pathin方式的问题
2014-09-05
c语言新手入门代码
2022-03-22
打扮我最美游戏下载v1.0 安卓版
其它手游 136.2M
下载暖暖公主爱换装官方版下载v1.2 安卓版
其它手游 175.7M
下载我的机器人战争游戏下载v1.1.1 安卓版
其它手游 110.8M
下载太空杀抓捕内鬼最新版下载v1.1 安卓版
其它手游 34.8M
下载鱼丸深海狂鲨官方正版下载v9.0.30.0.0 最新安卓手机版
其它手游 78.0M
下载时尚暖暖换装舞会最新版下载v1.0 安卓版
其它手游 116.2M
下载彩笔快来画小游戏下载v4.0 安卓版
其它手游 49.7M
下载程序塔防游戏下载v2.8 安卓版
其它手游 84.6M
下载枪火刺激吃鸡手机版下载v3.0 安卓版
下载
迷你托卡小镇小家游戏下载v1.0 安卓版
下载
终结荒野精英官方版下载v2.6 安卓版
下载
荣耀火柴人王者游戏下载v1.0.0 安卓版
下载
天才宠物银幕秀完整版下载v1.1.0 安卓最新版
下载
公主宠物世界官方版下载v1.0.3 安卓版
下载
托卡城镇大自然游戏下载v4.6 安卓版
下载
火柴人盟军遗产2游戏下载v1.0.62 安卓版
下载