php学习笔记(一)
php学习笔记(一)
PHP学习笔记
作者:yzs
基本的PHP语法
嵌入HTML时PHP用PHP用的标记有四种,
* <?php ?>
* <scrpt language='php'> </script>
* <? ?>(需要开启short_open_tag)
* <% %>(需要开启asp_tags),
可以在php.ini中开启以上两个选项。
PHP的注释有三种:
* // 单行注释
* # 单行注释
* /**/ 多行注释
PHP 脚本以结束:
```php?linenums
<?php
// php 代码
?>
<pre><code>PHP文件的默认文件扩展名".php"
PHP文件通常包含HTML标签和一些PHP脚本代码。
```php
<!DOCTYPE html>
<html>
<body>
<h1>My first PHP page</h1>
<?php
echo "Hello World!";
?>
<?php
print "HelloWorld!!!"
?>
</body>
</html>
PHP中的每个代码行必须以分号结束。
PHP 的数据类型
PHP 支持 8 种原始数据类型
四中标量数据类型
boolean (布尔型)
取值为 TRUE 或 FALSE(不区分大小写)。
integer (整型)
取值 123(十进制)
-123(负数)
0123 八进制 ,83,如果向一个八进制数传递一个非法数字9或8后面的数字会被忽略
<?php
var_dump(01090); // 表示为八进制010
?>
0x1A (十六进制,26)
整数溢出(如果过的定的整数超过integer的范围,将会被解释为float)
PHP 中没有整除的运算。1/2 产生出 float 0.5 。舍弃小数部分可以用 integer ,或者使用 round() 函数可以进行四舍五入。
<?php
var_dump(25/7); // float (3.5...)
var_dump((int)(25/7)); // int (3)
var_dump(round(25/7)); // float (4)
?>
float (浮点型,也称作 double)
浮点数的精度有限,取决于操作系统。
string (字符串)
一个字符串可以用 4 种方式表达:
* 单引号
单引号的字符串不解释变量,与大部分转义字符。
要表达一个单引号自身,需在它的前面加个反斜线(\)来转义。要表达一个反斜线自身,则用两个反斜线(\)。
其它任何方式的反斜线都会被当成反斜线本身:也就是说如果想使用其它转义序列例如 \r 或者 \n,并不代表任何特殊含义,就单纯是这两个字符本身。
双引号 如果字符串是包围在双引号(")中, PHP 将对一些特殊的字符进行解析
heredoc 语法结构(多行文本)
heredoc语句结构:
<<<标识符
内容
标识符;
实例:
php
<?php
$str = <<<EOD
Hello worled
www.yangzhaoshuo.cn
EOD;
?>
heredoc 结构的字符串解释变量和转移字符
nowdoc 语法结构(自 PHP 5.3.0 起)
nowdoc 语句结构:
<<<'标识符'
内容
标识符;
实例:
<?php
$str=<<<'EOD'
Hello worled
www.yangzhaoshuo.cn
EOD;
?>
nowdoc结构的字符串不解析变量和转义字符。
两种复合类型
array (数组)
PHP中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。可以把 array 当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。
array (数组) 接受任意数量用逗号分隔的 键(key) => 值(value)对。
array (数组) 格式:
array( key => value
, ...
)
// 键(key)可是是一个整数 integer 或字符串 string
// 值(value)可以是任意类型的值
array 实例 1:
<?php
$array = array(
"foo" => "bar",
"bar" => "foo",
);
// 自 PHP 5.4 起
$array = [
"foo" => "bar",
"bar" => "foo",
];
?>
此外 key 会有如下的强制转换:
包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值。
浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。
布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
Null 会被转换为空字符串,即键名 null 实际会被储存为 ""。
数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type。
array 实例 2:
<?php
$array = array(
1 => "a",
"1" => "b",
1.5 => "c",
true => "d",
);
var_dump($array);
?>
输出结果:
array(1){
[1] =>
string(1) "d"
}
// 上例中所有的键名都被强制转换为 1,则每一个新单元都会覆盖前一个的值,最后剩下的只有一个 "d"。
array 实例3:
<?php
$array = array(
"foo" => "bar",
"bar" => "foo",
100 => -100,
-100 => 100,
);
var_dump($array);
?>
输出结果:
array(4) {
["foo"]=>
string(3) "bar"
["bar"]=>
string(3) "foo"
[100]=>
int(-100)
[-100]=>
int(100)
}
array 实例 4:
<?php
// 没有键名的索引数组
$array = array("foo", "bar", "hallo", "world");
var_dump($array);
?>
输出结果:
array(4) {
[0]=>
string(3) "foo"
[1]=>
string(3) "bar"
[2]=>
string(5) "hallo"
[3]=>
string(5) "world"
}
array 实例 5:
<?php
$array = array(
"a",
"b",
6 => "c",
"d",
);
var_dump($array);
?>
输出结果:
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[6]=>
string(1) "c"
[7]=>
string(1) "d"
}
array 实例 6:
<?php
$array = array(
"foo" => "bar",
42 => 24,
"multi" => array(
"dimensional" => array(
"array" => "foo"
)
)
);
var_dump($array["foo"]);
var_dump($array[42]);
var_dump($array["multi"]["dimensional"]["array"]);
?>
输出结果:
string(3) "bar"
int(24)
string(3) "foo"
Note: 方括号和花括号可以互换使用来访问数组单元(例如 \$array[42] 和 \$array{42} 在上例中效果相同)。
object (对象)
对象初始化
<?php
class foo
{
function do_foo()
{
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();
?>
转换为对象
<?php
$obj = (object) 'ciao';
echo $obj->scalar; // outputs ' ciao'
?>
最后是两中特殊类型
resource (资源)
资源 resource 是一种特殊变量,保存了外部资源的一个引用。资源是通过专门的函数来建立和使用的。
转换为资源
由于资源类型变量保存有打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。
释放资源
由于 PHP 4 Zend 引擎引进了引用计数系统,可以自动检测到一个资源不再被引用了(和 Java 一样)。这种情况下此资源使用的所有外部资源都会被垃圾回收系统释放。因此,很少需要手工释放内存。
NULL (无类型)
NULL 类型只有一个值,就是不区分大小写的常量 NULL。
NULL 实例:
<?php
$var = NULL;
?>
Note:如果想查看某个表达式的值和类型用var_dump()函数
类型转换的判别
PHP 的变量定义不需要声明类型定义(PHP是弱类型语言),变量的类型是根据使用该变量的上下文所决定。
<?php
$foo = "0"; // $foo 是字符串 (ASCII 48)
$foo += 2; // $foo 是一个整数(2)
$foo = $foo + 1.3; // $foo 是一个浮点数(3.3)
$foo = 5 + "10 Little Piggies"; // $foo 是整数(15)
$foo = 5 + "10 Small Pigs"; // $foo 是整数(15)
?>
类型强制转换
在要转换的变量之前加上用括号括起来的目标类型。
允许的强制转换有:
(int), (integer) - 转换为整形 integer
(bool), (boolean) - 转换为布尔类型 boolean
(float), (double), (real) - 转换为浮点型 float
(string) - 转换为字符串 string
(array) - 转换为数组 array
(object) - 转换为对象 object
(unset) - 转换为 NULL (PHP 5)
<?php
$foo = 10;
$bar = (boolean) $foo;
// 将字符串文字转换为二进制字符串
$string = "binary string"
$binary = (binary)$string;
$binary = b"binary string";
?>
联系方式:
请扫码关注我的公众号或微信搜索 YZS_World
原文链接:http://www.yangzhaoshuo.cn/?p=84
PHP学习笔记
作者:yzs
基本的PHP语法
嵌入HTML时PHP用PHP用的标记有四种,
* <?php ?>
* <scrpt language='php'> </script>
* <? ?>(需要开启short_open_tag)
* <% %>(需要开启asp_tags),
可以在php.ini中开启以上两个选项。
PHP的注释有三种:
* // 单行注释
* # 单行注释
* /**/ 多行注释
PHP 脚本以结束:
```php?linenums
<?php
// php 代码
?>
<pre><code>PHP文件的默认文件扩展名".php"
PHP文件通常包含HTML标签和一些PHP脚本代码。
```php
<!DOCTYPE html>
<html>
<body>
<h1>My first PHP page</h1>
<?php
echo "Hello World!";
?>
<?php
print "HelloWorld!!!"
?>
</body>
</html>
PHP中的每个代码行必须以分号结束。
PHP 的数据类型
PHP 支持 8 种原始数据类型
四中标量数据类型
boolean (布尔型)
取值为 TRUE 或 FALSE(不区分大小写)。
integer (整型)
取值 123(十进制)
-123(负数)
0123 八进制 ,83,如果向一个八进制数传递一个非法数字9或8后面的数字会被忽略
<?php
var_dump(01090); // 表示为八进制010
?>
0x1A (十六进制,26)
整数溢出(如果过的定的整数超过integer的范围,将会被解释为float)
PHP 中没有整除的运算。1/2 产生出 float 0.5 。舍弃小数部分可以用 integer ,或者使用 round() 函数可以进行四舍五入。
<?php
var_dump(25/7); // float (3.5...)
var_dump((int)(25/7)); // int (3)
var_dump(round(25/7)); // float (4)
?>
float (浮点型,也称作 double)
浮点数的精度有限,取决于操作系统。
string (字符串)
一个字符串可以用 4 种方式表达:
* 单引号
单引号的字符串不解释变量,与大部分转义字符。
要表达一个单引号自身,需在它的前面加个反斜线(\)来转义。要表达一个反斜线自身,则用两个反斜线(\)。
其它任何方式的反斜线都会被当成反斜线本身:也就是说如果想使用其它转义序列例如 \r 或者 \n,并不代表任何特殊含义,就单纯是这两个字符本身。
双引号 如果字符串是包围在双引号(")中, PHP 将对一些特殊的字符进行解析
heredoc 语法结构(多行文本)
heredoc语句结构:
<<<标识符
内容
标识符;
实例:
php
<?php
$str = <<<EOD
Hello worled
www.yangzhaoshuo.cn
EOD;
?>
heredoc 结构的字符串解释变量和转移字符
nowdoc 语法结构(自 PHP 5.3.0 起)
nowdoc 语句结构:
<<<'标识符'
内容
标识符;
实例:
<?php
$str=<<<'EOD'
Hello worled
www.yangzhaoshuo.cn
EOD;
?>
nowdoc结构的字符串不解析变量和转义字符。
两种复合类型
array (数组)
PHP中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。可以把 array 当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。
array (数组) 接受任意数量用逗号分隔的 键(key) => 值(value)对。
array (数组) 格式:
array( key => value
, ...
)
// 键(key)可是是一个整数 integer 或字符串 string
// 值(value)可以是任意类型的值
array 实例 1:
<?php
$array = array(
"foo" => "bar",
"bar" => "foo",
);
// 自 PHP 5.4 起
$array = [
"foo" => "bar",
"bar" => "foo",
];
?>
此外 key 会有如下的强制转换:
包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值。
浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。
布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
Null 会被转换为空字符串,即键名 null 实际会被储存为 ""。
数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type。
array 实例 2:
<?php
$array = array(
1 => "a",
"1" => "b",
1.5 => "c",
true => "d",
);
var_dump($array);
?>
输出结果:
array(1){
[1] =>
string(1) "d"
}
// 上例中所有的键名都被强制转换为 1,则每一个新单元都会覆盖前一个的值,最后剩下的只有一个 "d"。
array 实例3:
<?php
$array = array(
"foo" => "bar",
"bar" => "foo",
100 => -100,
-100 => 100,
);
var_dump($array);
?>
输出结果:
array(4) {
["foo"]=>
string(3) "bar"
["bar"]=>
string(3) "foo"
[100]=>
int(-100)
[-100]=>
int(100)
}
array 实例 4:
<?php
// 没有键名的索引数组
$array = array("foo", "bar", "hallo", "world");
var_dump($array);
?>
输出结果:
array(4) {
[0]=>
string(3) "foo"
[1]=>
string(3) "bar"
[2]=>
string(5) "hallo"
[3]=>
string(5) "world"
}
array 实例 5:
<?php
$array = array(
"a",
"b",
6 => "c",
"d",
);
var_dump($array);
?>
输出结果:
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[6]=>
string(1) "c"
[7]=>
string(1) "d"
}
array 实例 6:
<?php
$array = array(
"foo" => "bar",
42 => 24,
"multi" => array(
"dimensional" => array(
"array" => "foo"
)
)
);
var_dump($array["foo"]);
var_dump($array[42]);
var_dump($array["multi"]["dimensional"]["array"]);
?>
输出结果:
string(3) "bar"
int(24)
string(3) "foo"
Note: 方括号和花括号可以互换使用来访问数组单元(例如 \$array[42] 和 \$array{42} 在上例中效果相同)。
object (对象)
对象初始化
<?php
class foo
{
function do_foo()
{
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();
?>
转换为对象
<?php
$obj = (object) 'ciao';
echo $obj->scalar; // outputs ' ciao'
?>
最后是两中特殊类型
resource (资源)
资源 resource 是一种特殊变量,保存了外部资源的一个引用。资源是通过专门的函数来建立和使用的。
转换为资源
由于资源类型变量保存有打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。
释放资源
由于 PHP 4 Zend 引擎引进了引用计数系统,可以自动检测到一个资源不再被引用了(和 Java 一样)。这种情况下此资源使用的所有外部资源都会被垃圾回收系统释放。因此,很少需要手工释放内存。
NULL (无类型)
NULL 类型只有一个值,就是不区分大小写的常量 NULL。
NULL 实例:
<?php
$var = NULL;
?>
Note:如果想查看某个表达式的值和类型用var_dump()函数
类型转换的判别
PHP 的变量定义不需要声明类型定义(PHP是弱类型语言),变量的类型是根据使用该变量的上下文所决定。
<?php
$foo = "0"; // $foo 是字符串 (ASCII 48)
$foo += 2; // $foo 是一个整数(2)
$foo = $foo + 1.3; // $foo 是一个浮点数(3.3)
$foo = 5 + "10 Little Piggies"; // $foo 是整数(15)
$foo = 5 + "10 Small Pigs"; // $foo 是整数(15)
?>
类型强制转换
在要转换的变量之前加上用括号括起来的目标类型。
允许的强制转换有:
(int), (integer) - 转换为整形 integer
(bool), (boolean) - 转换为布尔类型 boolean
(float), (double), (real) - 转换为浮点型 float
(string) - 转换为字符串 string
(array) - 转换为数组 array
(object) - 转换为对象 object
(unset) - 转换为 NULL (PHP 5)
<?php
$foo = 10;
$bar = (boolean) $foo;
// 将字符串文字转换为二进制字符串
$string = "binary string"
$binary = (binary)$string;
$binary = b"binary string";
?>
联系方式:
请扫码关注我的公众号或微信搜索 YZS_World
原文链接:http://www.yangzhaoshuo.cn/?p=84
> 我来回应
热门话题 · · · · · · ( 去话题广场 )
- 想做的事,别等“以后”1.0万+篇内容 · 957.0万次浏览
- 中年人感悟特别多1927篇内容 · 872.8万次浏览
- 普通人有哪些糟糕的财务决定74篇内容 · 21.9万次浏览
- 我身边闷声发财的普通人35篇内容 · 21.7万次浏览
- 让人生变开阔的方法1.0万+篇内容 · 323.4万次浏览
- 哪个瞬间你发现自己被琐碎地爱着?953篇内容 · 226.9万次浏览
- 万物皆可邪修422篇内容 · 30.5万次浏览
- 你有哪些“终不似,少年游”的经历?3830篇内容 · 148.2万次浏览