PHP
引号定义的字符串里如果还有引号,是当成普通字符来处理的
1. 静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。
function Test()
{
$w3sky = 0;
echo $w3sky;
$w3sky++;
}
?>
本函数每次调用时都会将 $w3sky 的值设为 0 并输出 "0"。将变量加一的 $w3sky++ 没有其到效果,因为一旦退出本函数则变量 $w3sky 就不存在了。要写一个不会丢失本次计数值的计数函数,要将变量 $w3sky 定义为静态(static)代码如下:
function Test()
{
static $w3sky = 0;
echo $w3sky;
$w3sky++;
}
?>
本函数每调用Test()都会输出 $w3sky 的值并加一。
2.echo输出后的结果是挨在一起的,除非在结尾加<br>。当然,若输出块级元素会自动换行
如echo"<h1>asdasd</h1>";
echo"asdsad<br>";
echo输出字符串需要加引号,输出变量不用加 如
<?php
$age=array("Peter"=>"35");
echo "Peter is " . $age['Peter'] . " years old.";
?>
3.可以在echo或print内让html标签起作用
如echo"<h1>asdsadwe</h1>";
4.heredoc 中,变量不需要用连接符 . 或 , 来拼接。
<?php$name="runoob";
$a= <<<EOF
"abc"$name
"123"
EOF;// 结束需要独立一行且前后不能空格
echo $a;?> //输出为abcrunoob123
5.指数与 八进制(以0开头的整数)
$x = 2.4e3; //x=2400(十进制)
$x=021; //x=17(十进制)
6.常量名不需要加 $ 修饰符
define("GREETING", "欢迎访问 Runoob.com", true);
echo GREETING;//输出 欢迎访问Runoob.com
7.双引号与单引号
双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符(但html标签在单引号中也可以被解析)。例如:
Php代码
复制代码代码如下:
$foo = 2;
echo "foo is $foo"; // 打印结果: foo is 2
echo 'foo is $foo'; // 打印结果: foo is $foo
echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行)
echo 'foo is $foo\n'; // 打印结果: foo is $foo\n
8.大括号{}与括号()
输出时大括号包围变量时,大括号的作用是告诉我包围的是变量,把它解析出来,但不要把我大括号显示出来。
括号包围变量时也会让变量被解析,但括号也会显示出来。
$dd='hello';
echo "{$dd}aa"; //输出 helloaa
$dd='hello';
echo "($dd)aa"; //输出 (hello)aa
同时 大括号有区分变量的作用 如{$aa}bb 没有大括号就变成变量$aabb.恰当的使用大括号{}限制变量的范围。${$a[1]} 与${$a}[1] 是完全不同的
9. !==(不完全相等,只要值或者类型不同,就是不完全相等)与===(完全相等,值与类型都相等)
$x=100; $y="100";则x与y值相等,但类型不等
($x==$y)返回true 而($x===$y)返回false
($x!=$y)返回fasle 而($x!==$y)返回true
10 运算符
$a & $b (按位与) 将把 $a 和 $b 中都为 1 的位设为 1。
$a && $b (逻辑与) 即$a and $b
$a | $b (按位或) 将把 $a 和 $b 中有 1 的位设为 1。
$a || $b (逻辑或) 即$a or $b
10.foreach 仅用于数组
遍历索引数组
$colors = array("red","green","blue","yellow");
foreach ($colors as $value) {
echo "$value <br>";
}
遍历关联数组
$colors = array("1"=>"red","2"=>"green","3"=>"blue","4"=>"yellow");
foreach($colors as $x=>$x_value) {
echo "Key=" . $x . "and Value=" . $x_value;
echo "<br>";
}
11.超全局变量
(1) $key=5;
$GLOBALS['key']; //变量$key的值在超全局变量数组中。变量名key则作为键值。
echo $GLOBALS['key']; //会输出5
(2)$_SERVER与$_REQUEST
$_REQUEST 用于收集 HTML 表单提交的数据。
下面的例子展示了一个包含输入字段及提交按钮的表单。当用户通过点击提交按钮来提交表单数据时, 表单数据将发送到 <form> 标签的 action 属性中指定的脚本文件。在这个例子中,我们指定文件本身来处理表单数据。如果您需要使用其他的 PHP 文件来处理表单数据,请修改为您选择的文件名即可。然后,我们可以使用超级全局变量 $_REQUEST 来收集 input 字段的值:
实例
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> /*$_SERVER['PHP_SELF']返回当前执行脚本文件的文件名,此时就是文件本身。action="xxxx.php"常这样用 */
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php //此处开始执行脚本文件
$name = $_REQUEST['fname']; //在名为'fname'的输入文本中输入,所以用_REQUEST提取输入的数据
echo $name;
?>
</body>
</html>
12. test_get.php?subject=PHP&web=W3school.com.cn 说明脚本处理文件为 test_get.php
name为subject的值是PHP name为webt的值是W3school.com.cn
13.GET与POST
GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
如读者对新闻发表自己的评论应该通过POST实现,因为在评论提交后站点的资源已经不同了,或者说资源被修改了。GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。POST把提交的数据则放置在是HTTP包的包体中。
总结:Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发!