[PHP] 01 - Hypertext Preprocessor
超级文本预处理语言:http://php.net/
集成的服务器组件,它已经包含了 PHP、Apache、Mysql 等服务
PHP 7
Laravel 框架
看documentation
涵盖了所有基础概念。
了解一下web开发的基础比如session, cookie等等。
基础语法篇
[1] 基本语法借鉴c语言
[2] 与c语言的区别
一、变量
[1] 弱类型语言
[2] PHP 变量作用域
-
- local 见 [3]
- global 见 [3]
- static
- parameter
<?php $x=5; // 全局变量 function myTest() { $y=10; // 局部变量 echo "<p>测试函数内变量:<p>"; echo "变量 x 为: $x"; // 注意:不是全局变量 echo "<br>"; echo "变量 y 为: $y"; } myTest(); echo "<p>测试函数外变量:<p>"; echo "变量 x 为: $x"; echo "<br>"; echo "变量 y 为: $y"; // 注意:也不能读取函数内部的局部变量 ?>
[3] PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中;global也可用于函数内访问全局变量。
<?php $x=5; $y=10; function myTest() { $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y']; }
-----------------------------------------------
function myTest()
{
global $x,$y;
$y=$x+$y;
}
myTest(); echo $y; ?>
[4] 常量在定义后默认是全局变量
<?php // 区分大小写的常量名 define("GREETING", "欢迎访问 Runoob.com"); echo GREETING; // 输出 "欢迎访问 Runoob.com" echo '<br>'; echo greeting; // 输出 "greeting" ?>
----------------------------------------------
<?php // 不区分大小写的常量名 define("GREETING", "欢迎访问 Runoob.com", true); echo greeting; // 输出 "欢迎访问 Runoob.com" ?>
[5] 魔术常量
__LINE__ |
|
__FILE__ |
文件的完整路径和文件名 |
__DIR__ |
|
__FUNCTION__ |
函数名称 |
__CLASS__ |
|
__TRAIT__ |
被声明的作用区域 |
__METHOD__ |
类的方法名 |
__NAMESPACE__ |
|
关于trait,需要深入理解下。
<?php class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello(); ?>
[6] 超级全局变量
-
- PHP $_SERVER
<?php echo $_SERVER['PHP_SELF']; echo "<br>"; echo $_SERVER['SERVER_NAME']; echo "<br>"; echo $_SERVER['HTTP_HOST']; echo "<br>"; echo $_SERVER['HTTP_REFERER']; echo "<br>"; echo $_SERVER['HTTP_USER_AGENT']; echo "<br>"; echo $_SERVER['SCRIPT_NAME']; ?>
Result:
/try/demo_source/demo_global_server.php
www.runoob.com
www.runoob.com
http://www.runoob.com/try/showphp.php?filename=demo_global_server
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36
/try/demo_source/demo_global_server.php
-
- PHP $_REQUEST
用于收集HTML表单提交的数据。
<body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Name: <input type="text" name="fname"> <input type="submit"> </form> <?php $name = $_REQUEST['fname']; echo $name; ?> </body>
-
- PHP $_POST
应用于收集表单数据。
<body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Name: <input type="text" name="fname"> <input type="submit"> </form> <?php $name = $_POST['fname']; echo $name; ?> </body>
-
- PHP $_GET
应用于收集表单数据
<body>
<a href="test_get.php?subject=PHP&web=runoob.com">测试 $_GET</a>
</body>
二、打印字符串
- echo - 可以输出一个或多个字符串
- print - 只允许输出一个字符串,返回值总为 1【所以慢】
- EOF - 按照原样,包括换行格式什么的,输出在其内部的东西
<?php $name="runoob"; $a= <<<EOF "abc"$name "123" EOF; // 结束需要独立一行且前后不能空格 echo $a; ?>
部分的实现了界面与代码的准分离,phpwind模板就是一个典型的例子。
- String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。
- var_dump 函数
[Integer]
<?php $x = 5985; var_dump($x); echo "<br>"; $x = -345; // 负数 var_dump($x); echo "<br>"; $x = 0x8C; // 十六进制数 var_dump($x); echo "<br>"; $x = 047; // 八进制数 var_dump($x); ?>
[Float] <?php $x = 10.365; var_dump($x); echo "<br>"; $x = 2.4e3; var_dump($x); echo "<br>"; $x = 8E-5; var_dump($x); ?>
Return:
float(10.365)
float(2400)
float(8.0E-5)
[Array]
<?php $cars=array("Volvo","BMW","Toyota"); var_dump($cars); ?>
# 注意,箭头函数? 这里只是个key-value array(3) { [0]=> string(5) "Volvo" [1]=> string(3) "BMW" [2]=> string(6) "Toyota" }
[Object]
<?php class Car { var $color; function __construct($color="green") { $this->color = $color; } function what_color() { return $this->color; } }
----------------------------------------------------- function print_vars($obj) { foreach (get_object_vars($obj) as $prop => $val) { // --> 之后再细讲 echo "\t$prop = $val\n"; } } // 实例一个对象 $herbie = new Car("white"); // 显示 herbie 属性 echo "\therbie: Properties\n"; print_vars($herbie); ?>
三、字符串
PHP 并置运算符 | echo $txt1 . " " . $txt2; |
strlen() 函数 | echo strlen("Hello world!"); |
strpos() 函数 | echo strpos("Hello world!","world"); |
四、运算符
PHP 算术运算符 |
(1) x % y 比较 intdiv(10, 3) |
PHP 赋值运算符 |
(1) a .= b |
PHP 递增/递减运算符 |
|
PHP 比较运算符 |
(1) x === y 对比 5==="5" return false , (2) x <> y 等同 x != y 对比 x !== y |
PHP 逻辑运算符 |
(1) $a || $b AND $c || $d 相当于 ($a || $b) AND ($c || $d) |
PHP 数组运算符 | (1) $x = array("a" => "red", "b" => "green"); |
PHP 三元运算符 | |
组合比较符 (PHP7+) | |
运算符优先级 | |
五、条件语句
- if 语句 - 在条件成立时执行代码
- if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
- if...elseif....else 语句 - 在若干条件之一成立时执行一个代码块
- switch 语句 - 在若干条件之一成立时执行一个代码块
六、数组与循环
- 定义
<?php $cars=array("Volvo","BMW","Toyota"); echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; ?>
- 求长度
echo count($cars);
- 遍历
<?php $cars=array("Volvo","BMW","Toyota"); $arrlength=count($cars); for($x=0; $x<$arrlength; $x++) { echo $cars[$x]; echo "<br>"; } ?>
- 关联数组
<?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); echo "Peter is " . $age['Peter'] . " years old."; ?>
- 关联数组 de 遍历
<?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
/**
* 有点把age拆分开的意思
*/ foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } ?>
- 多维数组 - 不同类型组合在一起
<pre> <?php // 二维数组: $cars = array ( array("Volvo",100,96), array("BMW",60,59), array("Toyota",110,100) ); print_r($cars); ?> </pre>
输出:
Array ( [0] => Array ( [0] => Volvo [1] => 100 [2] => 96 ) [1] => Array ( [0] => BMW [1] => 60 [2] => 59 ) [2] => Array ( [0] => Toyota [1] => 110 [2] => 100 ) )
- 多维数组 - 自定义分配 ID 键
<?php $sites = array ( "runoob"=>array("菜鸟教程", "http://www.runoob.com"), "google"=>array("Google 搜索", "http://www.google.com"), "taobao"=>array("淘宝", "http://www.taobao.com") ); print("<pre>"); // 格式化输出数组 print_r($sites); print("</pre>"); ?>
输出:
- while 循环
-
for 循环
- foreach 循环
<?php $x=array("one","two","three"); foreach ($x as $value) { echo $value . "<br>"; } ?>
七、数组的排序
sort() | sort($cars); | $cars=array("Volvo","BMW","Toyota"); |
rsort() | rsort($cars); | |
asort() | asort($age); | $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); |
ksort() | ksort($age); | |
aksort() | arsort($age); | |
krsort() | krsort($age); |
举个例子:冒泡算法
<?php
// 从大到小排序 $numArray = array(3,2,6,5,8,10); $numCount = count($numArray);
for($i=$numCount-1; $i>=0; $i--) { for($j=0; $j<$i; $j++) { if($numArray[$j]< $numArray[$j+1]) { $aa = $numArray[$j+1]; $numArray[$j+1]=$numArray[$j]; $numArray[$j]=$aa; } } } print_r($numArray); ?>
八、函数
在 PHP 中,提供了超过 1000 个内建的函数。例如其中的 PHP 参考手册。
<?php function writeName() { echo "Kai Jim Refsnes"; } echo "My name is "; writeName(); ?>
- 参数传递
通常,函数获取参数的方式是值传递。
引用传递:参数名前加一个地址符(&)。
下一篇见:命名空间和类