通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要更进一步的工作。
要完成这一点,请在您首次声明变量时使用 static 关键词:
实例
<?php
function myTest() {
static $x=0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
然而,每当函数被调用时,这个变量所存储的信息都是函数最后一次被调用时所包含的信息。
注释:该static变量仍然是函数的局部变量(局部函数外部无法使用改变量)。PHP中常量的声明使用define(varname , value),被定义为常量后,全局都可以使用。
PHP var_dump() 会返回变量的数据类型和值:
$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。
PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。
下面的例子展示了如何使用超级全局变量 $GLOBALS:实例
<?php
$x = 75;
$y = 25;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
/*$x , $y 如果不使用$GLOBALS['index'],则在addtion()函数中是无法使用php脚本中的$x ,$y的值,由于 z 是 $GLOBALS 数组中的变量,因此在函数之外也可以访问它。
foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。
foreach ($array as $value) {
code to be executed;
}
每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。
下面的例子演示的循环将输出给定数组($colors)的值:
<?php
$colors = array("red","green","blue","yellow");
foreach ($colors as $value) {
echo "$value <br>";
}
?>
在 PHP 中, array() 函数用于创建数组:
array();
在 PHP 中,有三种数组类型:
有两种创建索引数组的方法:
索引是自动分配的(索引从 0 开始):
$cars=array("Volvo","BMW","SAAB");
或者也可以手动分配索引:
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="SAAB";
如需遍历并输出索引数组的所有值,您可以使用 for 循环,就像这样:实例
<?php
$cars=array("Volvo","BMW","SAAB");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++) {
echo $cars[$x];
echo "<br>";
}
?>
关联数组是使用您分配给数组的指定键的数组。
有两种创建关联数组的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
或者:
$age['Peter']="35"; $age['Ben']="37"; $age['Joe']="43";
如需遍历并输出关联数组的所有值,您可以使用 foreach 循环,就像这样:
<?php $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43"); foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } ?>
多维数组指的是包含一个或多个数组的数组。
PHP 能理解两、三、四或五级甚至更多级的多维数组。不过,超过三级深的数组对于大多数人难于管理。
注释:数组的维度指示您需要选择元素的索引数。
两维数组是数组的数组(三维数组是数组的数组的数组)。
我们能够在两维数组中存储上表中的数据,就像这样:
$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
现在这个两维数组包含了四个数组,并且它有两个索引(下标):行和列。
如需访问 $cars 数组中的元素,我们必须使用两个索引(行和列):
<?php
echo $cars[0][0].": 库存:".$cars[0][1].", 销量:".$cars[0][2].".<br>";
echo $cars[1][0].": 库存:".$cars[1][1].", 销量:".$cars[1][2].".<br>";
echo $cars[2][0].": 库存:".$cars[2][1].", 销量:".$cars[2][2].".<br>";
echo $cars[3][0].": 库存:".$cars[3][1].", 销量:".$cars[3][2].".<br>";
?>
我们也可以在 For 循环中使用另一个 For 循环,来获得 $cars 数组中的元素(我们仍需使用两个索引):
<?php
for ($row = 0; $row < 4; $row++) {
echo "<p><b>Row number $row</b></p>";
echo "<ul>";
for ($col = 0; $col < 3; $col++) {
echo "<li>".$cars[$row][$col]."</li>";
}
echo "</ul>";
}
?>
<?php $arr=array( "row1"=>array(100,200,300,400), "row2"=>array("num"=>100,"name"=>"Liuxy","score"=>98) ); foreach ($arr as $key=>$value) { echo "$key=>$value"; echo "<br>"; foreach ($value as $k=>$var) echo "$k=>$var<br>"; } ?>PHP的数组元素是可以动态增长的 ,这是C里面不敢想的。为数组增加一个元素很简单,同访问数组元素一样,只不过键名是新的或者为空,如 $arr[new]=3; 或 $arr[]=3,这样做的结果是PHP为数组$arr增加一个键名为new的元素其值为3,若键名为空,则以当前整型键名的最大值加1作为默认的键名分配给新的元素。PHP的这种动态增长数组有时候很方便,但也带来隐患,比如当我们企图修改已存在的元素值而写错了键名时,就变成了新增一个元素,而这样的逻辑错误,系统是不会报错的。
在HTML嵌入PHP脚本”和“在PHP中嵌入HTML”是两个不同的概念
Web服务器设置中,默认是不把HTML拿去解析的. 如果在服务器中修改设置,也可以,但你觉得对每一个HTML进行解析,有必要吗?效率会很低下的。 因为在配置apache/Nginx时,php的扩展名一般配置为php或php3,只有当文件扩展名为php或php3时,才会通过php服务器端的解析,否则只当是html语言,不进行php脚本的解析,也就无法调用php的代码!APACHE在Apache的httpd.conf中加入以下语句: AddType application/x-httpd-htm .htm Action application/x-httpd-htm "/php5/php.exe"
在后面还可以加上别的 如果这样 这样就可以让php解释htm中的php代码了。
因为你的HTML内容中夹带PHP请求语句(如<?php .....?>),需要PHP引擎来语法解析,而PHP服务的默认文件后缀为.php和.php3, 但是.htm和.html后缀的文件是不会提交PHP引擎解析。
php文件中夹杂html代码却是没有问题的,因为php引擎只会解释php标签<?php ... ?>内的php代码语句,而html代码不会进行任何的处理,直接html送给浏览器。
<?php
echo "今天是 " . date("Y/m/d") . "<br>";
echo "今天是 " . date("Y.m.d") . "<br>";
echo "今天是 " . date("Y-m-d") . "<br>";
echo "今天是 " . date("l-y-m-d h:i:s a");
?>
date_default_timezone_set("Asia/Shanghai"); // PRC 表示中国
date() 函数中可选的时间戳参数规定时间戳。如果您未规定时间戳,将使用当前日期和时间(正如上例中那样)。
mktime() 函数返回日期的 Unix 时间戳。Unix 时间戳包含 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)与指定时间之间的秒数。
mktime(hour,minute,second,month,day,year)
下面的例子使用 mktime() 函数中的一系列参数来创建日期和时间:
<?php
$d=mktime(9, 12, 31, 6, 10, 2015);
echo "创建日期是 " . date("Y-m-d h:i:sa", $d);
?>
PHP strtotime() 函数用于把人类可读的字符串转换为 Unix 时间。
strtotime(time,now)
下面的例子通过 strtotime() 函数创建日期和时间:
<?php $d=strtotime("tomorrow"); echo date("Y-m-d h:i:sa", $d) . "<br>"; $d=strtotime("next Saturday"); echo date("Y-m-d h:i:sa", $d) . "<br>"; $d=strtotime("+3 Months"); echo date("Y-m-d h:i:sa", $d) . "<br>"; ?>
下例输出下周六的日期:
<?php
$startdate = strtotime("Saturday");
$enddate = strtotime("+6 weeks",$startdate);
while ($startdate < $enddate) {
echo date("M d", $startdate),"<br>";
$startdate = strtotime("+1 week", $startdate);
}
?>
下例输出七月四日之前的天数:
<?php
$d1=strtotime("December 31");
$d2=ceil(($d1-time())/60/60/24);
echo "距离十二月三十一日还有:" . $d2 ." 天。";
?>
include (或 require)语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中。
包含文件很有用,如果您需要在网站的多张页面上引用相同的 PHP、HTML 或文本的话。