如果您觉得这篇文章还不错,可以去H5专题介绍中查看更多相关文章。
首先非常抱歉,最近实在太忙,所以导致周六周日拖更,今天白天还忙工作,一直到现在才刚刚把最近学习的东西整理出来。
各位读者老爷,小的真的已经很辛苦了,现在22:17分了,我还在公司坐着,所以下面如果有什么错误的地方,也请各位观众老爷和谐讨论,别喷我。
好了,废话不多说了,直接上正文。
2016年03月21日22:25:24
我们为什么需要学习 PHP ?
因为我们以后学习过程中,肯定需要自己去搭建一些比较基础的小项目,而我们个人开发的时候没有后台给我们提供接口,所以我们就需要自己去编写一下接口,同时也为了以后成为全栈工程师打一个基础。
在1994年,PHP发布了1.0版本。
在1995年,PHP发布了2.0版本,在2.0中支持了 MySQL.
在1997年,PHP发布了3.0版本,加入了 Zeev Suraski 及 Andi Gutmans。
2000年发布的4.0版本。
有人说 PHP 是世界上最好的语言,虽然可能有些片面,但无可否认,PHP 有很多语言的优秀的特点。
同时也是因为源码开放,我们可以知道在 PHP 中存在 C,Java,Perl等语言的语法,这极大的方便了我们的学习过程。
而且,我们的 PHP 也有很多很便利的配合工具。
我们可以将一个成熟的服务器当作一条生产线,php就像传送带一样,为我们产出数据,Mysql是数据库也就相当于提供原材料,但是传送带却依赖电机这个动力。Apache就相当于一个运行的环境。
其中 MySQL 具有体积小,速度快的优点,同时还是关系型数据库。
Apache是Web服务器软件,它可以运行在几乎所有的计算机平台上面,这是最流行的Web服务器软件之一。
XAMPP是一个功能强大的建 (Apache+MySQL+PHP+Perl) 软件站集成软件包。而且手动安装Apache+MySQL+PHP环境过于复杂,而XAMPP帮我们集成了这个环境,我们只需点击安装即可。
所以我们接下来的学习过程,就以 XAMPP 为基础咯。
需要注意
如果我们在运行过程中,发现我们的 XAMPP 中的 MySQL 启动不起来,我们需要自己手动配置。
方法1:
终端运行 : sudo /Applications/XAMPP/xamppfiles/bin/mysql.server start
方法2:
打开我们的 XAMPP 文件中的 xampp 文件。不同人放置的位置可能不同,根据个人情况设置。
sudo /Applications/XAMPP/xamppfiles/xampp
,
之后在 162 行,$XAMPP_ROOT/bin/mysql.server start > /dev/null &
上面添加一句 unset DYLD_LIBRARY_PATH
.这样就可以了。
# 自动启动无法完成,添加该配置后可以启动 v.2016.03.21
unset DYLD_LIBRARY_PATH
#
$XAMPP_ROOT/bin/mysql.server start > /dev/null &
<?php echo “hello php”; ?>
<? echo “hello php”; ?>
//短标记<script language=“php”>echo “hello php”</script>
<% echo “hello php”; %>
//asp风格注: 1,3可以直接使用,但是2,4需要修改php.ini的配置文件才能使用
$age = 28;
$color = “red”;
$sum = 15+”12”; //$sum = 27;
$var_1 = “hello”;
$var_2 = &$var_1; //把变量var_l的内存地址赋值给var_2,即引用赋值
$var_1 = “hello”;
$$var_1 = “world”;
echo $var_1; //输出hello
echo $hello; //输出world
echo ${$var_1} //输出world
我们可以尝试一下,发现,我们的第三个属性$var_1
输出的也是 world ,这证明,我们的变量也可以重新成为一个变量。
php提供了很多有用预定于的变量,用于提供大量与环境有关的信息
服务器变量, 该全局变量包含着服务器和客户端配置及当前请求环境的有关信息
$_SERVER[‘SERVER_NAME’]; : 当前运行脚本所在的服务器的主机名
$_SERVER[‘REMOTE_ADDR’] : 客户端IP地址
$_SERVER[‘REQUEST_URI’] : URL的路径部份
$_SERVER[‘HTTP_USER_AGENT’] : 操作系统和浏览器的有关信息
该变量包含使用 GET 方法传递的参数的有关信息
url: http://localhost/test.php?id=100&page=2
$id = $_GET['id'];
$page = $_GET[‘page'];
该变量包含使用 POST 方法传递的参数的有关信息;
html:
<form name="reg" action="test.php" method="post">
用户名:<input type="text" name="username" />
密码: <input type="password” name="passwd"/> <input type="submit" value="提交" /> </form> php: $username = $_POST[‘username’]; $passwd = $_POST[‘passwd’];
$_REQUEST 该变量记录着通过各种输入方法传递给脚本的变量,如GET POST,但不要用这个超级全局变量,因为它不安全而且速度比较慢;
$_COOKIE cookie变量数组
$_SESSION 会话变量数组
$_FILES 与上传文件有关的变量数组
$_ENV 环境变量数组
$GLOBALS 所有全局变量数组
define('PI', 3.1415926);
echo PI; //3.1415926
__LINE__
文件中的当前行号;__FILE__
文件的完整路径和文件名;__FUNCTION__
函数名称;__CLASS__
类的名称;__METHOD__
类的方法名; 如果遇到美元符号($),解析器会尽可能多地取得后面的字符以组成一个合法的变量名,如果想明确的指定名字的结束,用花括号把变量名括起来。
$beer = "Heineken";
echo "He drank some {$beer}s";
字符串定界的方法使用定界符语法 “<<<”
$str = <<<EOD Example of string using heredoc syntax. EOD;
echo $str;
使用定界符要注意:
结束标识符所在的行不能包含任何其它字符,这意味着该标识符不能被缩进,在分号之前
之后都不能有任何空格或制表符;
- | 字符串转义 |
---|---|
\n | 换行 |
\r | 回车 |
\t | 水平制表符(tab键) |
\ | (反斜杠) |
$ | $(美元符) |
\” | “(双引号) |
$age = 25;
$num = 5.39;
$bo = TRUE;
$bo = FALSE;
$week = array(‘星期一','星期二','星期三');
$db = new db;
$fh = fopen("test.txt","r");
null 无,表示没有值,null不表示空格,也不表示0;
以下情况,则认为是null:
因为php对于类型定义非常的松散,所以有时会根据引用变量的环境,将变量自动转换为最适合的类型;
例1: $num = 5;
$str = “15”;
echo $num + $str;
例2: $str = “100 hello”;
$num = 200;
echo $num + $str;
例3:
$str = '1.2';
if($str){ //if 判断为 true
echo 'hello world';
}
1.gettype() 返回变量的类型,共有8个可能的值 string、integer、float、boolean、array、object、null、unknow
$str = ‘hello’;
echo gettype($str);
2.is_type() 查看变量是否属于某个类型,是返回 TRUE ,否返回 FALSE;
$arr = array(1);
echo is_array($arr);
$num = 5;
echo is_int($num);
3.var_dump() 获取变量的值和类型的详细信息
$str = ‘hello’;
var_dump($str);
$arr = array(‘A’, ‘B’, ‘C’);
var_dump($arr);
- | - | - |
---|---|---|
+ | 加法运算符 | a+ b; |
- | 加法运算符 | a− b; |
* | 乘法运算符 | a∗ b; |
/ | 除法运算符 | a/ b; |
% | 取模运算符(求余数) | a b; |
赋值运算符,将一个数据值赋给一个变量;
组合赋值运算符,在赋值之前会完成某个运算;
- | - | - |
---|---|---|
$a = 5 | 赋值 |
a+=5|加法赋值| a = a+5 a -= 5 | 减法赋值| a= a – 5
a∗=5|乘法赋值| a = a∗5 a /= 5 | 除法赋值| a= a / 5
a.=5|拼接赋值| a = $a.5
字符串运算符用于拼接字符串, 拼接表示将两个或多个对象组合起来;
$a = "hello";
$b = $a . “world"; //.表示拼接前后两个字符串 echo $b; $b = "Hello"; $b .= “World!"; //.= 表示 $b = $b.”World”;
echo $b;
递增和递减运算符将变量的当前值加1或减1,可以使代码更简洁;
-|-|-
:–|:–|:–
++ i|先加| i的值加1,然后再返回 i的值; i++ |后加| 先返回 i的值,然后再将 i的值加1;
– i|先减| i的值减1,然后再返回 i的值; i-- |后减| 先返回 i的值,然后再将 i的值减1;
利用逻辑运算符可以根据多个变量的值进行判断,这使得控制程序的流程成为可能,逻辑
操作符常用于控制结构中,如if条件和while及for循环;
- | - | - |
---|---|---|
&& | AND | 逻辑与 |
竖线 | OR | 逻辑或 |
! | NOT | 逻辑非 |
比较运算符,返回一个布尔值 TRUE 或 FALSE;
- | - |
---|---|
> |
大于 |
< |
小于 |
>= |
大于或等于 |
<= |
小于或等于 |
!= |
不等于 |
<> |
不等于 |
== |
等于 |
=== |
全等于 (两个比较的内容里,类型也要一样) |
!== |
全不等 |
语法:expression1 ? expression2 : expression3
$a = 5;
$b = 2;
$res = $a > $b ? "yes":"no";
echo $res;
所谓运算符的优先级指的是哪一个运算符应该先计算。
具体运算符的优先级,参考php手册;
赋值运算,从右到左
echo 1 + 2 * 3; //outputs 7
if(expression ){
//statement
}else if(expression){
//statement
}else{
//statement
}
If语句用括号中的表达式返回值(true 或 false )来控制是否执行指定的代码程序;
表达式为数字0、空、未定义的字符串,内置常量false都会返回false;
switch 语句可以看作是if-else组合的一种变体,如果需要比较有限值的变量,通常会使用switch语句;
语法格式:
switch (expression){
case value:
//statements
break;
default:
//statements
}
在每个case块的末尾处都有break语句,如果没有break语句,就会执行所有后续的case块,直到遇到break语句为止;
语法格式:
while(expression){
//statements
}
例:
$count = 1;
While ($count < 5) {
echo "$count 平方 = ".pow($count, 2)."<br />";
$count++;
}
do…while循环是while的一种变体,它在代码块的结束处验证循环条件;
语法格式:
do {
//statements
}while(expression);
例:
$count = 11;
do {
echo "$count squared = ". pow($count, 2). "<br />";
$count++;
}while($count < 10);
语法格式:
for(expression1; expression2; expression3){
//statements
}
第一个表达式expression1在第一次循环时计算;
第二个表达式expression2在每次循环时进行计算,这个表达式确定循环是否继续执行;
第三个表达式exprression3在每次循环结束时计算;
例:
for($i = 1; $i <= 5; $i++){
echo "$i squared = ".pow($count, 2)."<br/>";
}
break
如果包含一个break语句,将立即结束 while、do…while、for、foreach、switch的执行。
continue
continue语句使当前循环执行结束,并从下一次循环开始执行;
函数是用来完成某种特定任务的可重用代码块;
函数可以使程序更具模块化,拥有良好的结构;
函数定义后在程序中可以重复调用;
函数分为内置函数和自定义函数。
内置函数
PHP系统提供了大量功能强大的函数,帮助我们解决各种问题;
创建自定义函数
function function_name(parameters) {
//function body
}
例:
function sayhello(){
echo 'hello';
}
函数用function关键字来声明;
函数名称是由字母或下划线开始,中间可以包含数字;
函数名不区分大小写,不过在调用函数的时候,通常使用其在定义时相同的形式;、
php不支持函数重载, 所以自定义函数不能和内置函数重名;
不能在一个文件中自定义同名的函数;
参数出现在括号中,如果有多个参数用逗号分隔;
函数调用
语法格式:
fun_name(parameters);
例:
$val = pow(4, 2);
echo pow(3, 3);
注意不同语言的区别:
值传递(传值)
函数内对参数值的改变不会影响函数外部的值;
引用传递(传址)
有些情况下,可能希望在函数体内对参数的修改在函数体外也能反映;
使用引用传递参数要在参数前加上&符号;
变量本身传入,传入后的变量与原变量建立联系;
函数体内变量的变化,会影响到原变量本身;
例:
function sum($num_1, $num_2){
$res = $num_1 + $num_2;
return $res;
}
默认参数值:可以为参数指定默认值,在没有提供其他值的情况下,则将默认值自动赋给该参数;
可选参数:可以指定某个参数为可选参数,这些参数需要放在参数列表的末尾,需且要指定其默认值为空;
如果指定了多个可选参数,可以选择性地传递某些参数;
通常情况下,只依靠函数做某些事情还不够; 需要将函数的执行结果返回给调用者,这时可以使用 return 语句返回结果;
return 语句变执行后,将使得函数立即结束运行,并且将控制权返回被调用的行;
例:
function mysquare($num){
if($num == ‘’){
return;
}
$res = $x * $x;
return $res;
}
echo mysquare(4);
递归函数是一个可以重复调用自身的函数,直到满足某个条件为止;
递归函数常用来解决一些重复的问题;
递归应该特别注意条件,防止进入死循环中;
例:
function repayment($balance, $payment){
static $count = 1;
$newbalance = $balance - $payment;
echo $count.' '.$newbalance.'<br>';
if($newbalance > 0){
$count++;
repayment($newbalance, $payment);
}else{
exit;
}
}
$money = 20000;
$month_pay = 1000;
repayment($money, $month_pay);
由于引入了函数,程序中变量的能见度发生了变化,即变量的作用范围发生了改变;
变量分为:全局变量,局部变量,静态变量;
局部变量,函数体内定义的变量为局部变量,只在函数体内可见;
局部变量的作用域:从声明它的那条语句开始到函数结束;
例:
$str = 'hello php';
echo '1:'.$str.'<br />';
function change(){
$str = 'hello everyone';
echo '2:'.$str.'<br />';
}
change();
echo '3:'.$str;
include()
include()语句将在其被调用的位置处包含一个文件。
例: include(“init.php");
include_once()
include_once()的作用与include()相同,不过它会首先验证是否已经包含了该文件,如果已经包含,则不再执行include_once();
require() 与include() 一样,只不过require()我们通常放在php程序的最前面;
require_once() 与include_once() 一样,但是也要放在php程序的最前面;
include和require的区别
require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误
include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误。
数组可以理解为有序的(键-值)对组成的数据值的集合;
如果我们把变量理解为单个值的容器,那么数组就是可以包含多个值的容器;
根据索引值的不同数组分为:索引数组和关联数组;
例:
$day = array(“a”,”a”,”a”); //索引数组
$week = array("a"=> "星期一", "b"=>"星期二", "c"=> “星期三"); //关联数组
array array ( [mixed ...] )
例:
$arr = array();
$fruits = array("orange", "apple", "banana");
$languages = array("en"=> "english", "cn"=> "china");
与其它语言的数组实现方式不同,php不需要在创建数组时指定其大小;
因为php是一种松散类型的语言,所以甚至不需要在使用前先声明;
索引可以是整型数字或者是字符串;
索引数组:索引为整数,如果没有指定索引值则默认为零,依次递增;
关联数组:索引为字符串的数组;
$arr[key] = value;
例:
$fruits[] = "orange";
$fruits[] = "apple";
$languages["en"] = "english";
$languages["cn"] = "china";
如果方括号中没有指定索引,则取当前最大整数索引值,新的键名将是该值 + 1。
如果当前还没有整数索引,则键名将为0。如果指定的键名已经有值了,该值将被覆盖。
range() 建立一个包含指定范围单元的数组
例:
$num = range(1, 100);
print_r($num);
$letter = range('a','I');
print_r($letter);
for 循环遍历数组
使用数组指针遍历数组
key() 返回数组当前指针元素的索引;
current() 返回数组当前指针元素的值;
next() 将数组指针向前移动一位,并返回当前指针元素的值; 如果超出了数组元素的末尾,则返回FALSE
prev() 将数组指针往回移动一位, 并返回当前指针元素的值; 如果指针本来就位于数组的第一个位置则返回FALSE;
reset() 将指针指向第一个元素,并返回第一个元素的值
end() 将数组指针指向最后一个元素, 并返回最后一个元素的值;
each() 返回数组当前指针元素的键和值,并将指针推进一个位置;如果内部指针越过了数组的末端,则 each() 返回 FALSE。
list() 把数组中的值赋给一些变量;
foreach 循环遍历数组
例1:
$fruits = array('apple', 'banana', 'orange');
echo current($fruits );
each($fruits ); //使用each()推进指针向前一步
echo current($fruits );
next $fruits ); //也可以使用next() 推进指针向前一步
echo current($fruits );
end($fruits ); //将数组指针指向最后一个元素
print_r(each($fruits));
list($val1, $val2, $val3) = $fruits;
echo $val1;
echo $val2;
echo $val3;
例2:
$fruits = array('apple', 'banana', 'orange');
do{
echo key($fruits). '=> '.current($fruits);
}while(next($fruits));
while($arr = each($fruits)){
echo $ arr['key'].''.$arr['value'];
}
while(list($key, $value) = each($fruits)){
echo $key.''.$value;
}
数组元素的值也可以是数组;
例:
$result = array(
array(
'pname'=> 'nokia n73',
'price'=> 1500,
),
array(
'pname'=> 'nokia 5800',
'price'=> 2000,
),
);
遍历二维数组:
foreach($products as $product_k=>$product_v){
foreach($product_v as $key=>$val){
echo $key.'=>'.$val;
}
}
例:
$str = "1,2,3,4,5,6";
$arr = explode(',', $str);
print_r($arr);
例:
$arr = array('a','b', 'c', 'd');
$str = implode('|', $arr );
echo $str;
void echo ( string arg1 [, string ...] )
是一个语法 ,不是函数
echo 没有返回值;
echo 可以输出多个值,使用逗号分隔;
例:
$val = "world";
echo "hello", $val;
int print ( string arg )
实际上不是一个函数(它是一个语言结构)
例:
print ("hello $val");
print "hello world”;
功能:格式化输出字符串;
int printf ( string format [, mixed args [, mixed ...]] )
- | - |
---|---|
%b 二进制输出 |
brianry |
%d 整数输出 |
data |
%f 浮点数输出 |
float |
%s 字符串输出 |
string |
例:
$str = "123 test";
printf("整数:%d", $str);
printf("浮点数:%.2f", $str);
printf("字符串:%s", $str);
string sprintf ( string format [, mixed args [, mixed ...]] )
例:
$str = "123 test";
$val = sprintf("%d", $str);
echo $val;
strpos()
int strpos ( string haystack, mixed needle [, int offset] )
strpos()函数在 haystack 中以区分大小写的方式找到 needle 第一次出现的位置;
如果没有找到则返回FALSE;
可选参数offset 指定开始查找的位置;
例:echo strpos("Hello world!","wo");
stripos()
stripos()与strpos()功能相同,只是查找时不区别大小写;
str_replace()
mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count] )
str_replace()函数在subject中以区分大小写的方式搜索 search ,
用replace替换找到的所有内容; 如果没有找到search,则subject保持不变;
如果定义了可选参数 count 则只替换subject中count个search
例:
$str = "[email protected]";
$email = str_replace("@", "(at)", $str);
echo $email;
str_ireplace()
str_ireplace()与str_replace()功能相同,只是不区分大小写;
substr()
string substr ( string string, int start [, int length] )
从start位置取出length长度的字符,字符串位置开始值为零;
如果没有指定length,那么默认一直到字符串末尾;
例:
echo substr("Hello world", 6);
echo substr("hello world", 6, 5);
strstr()
string strstr ( string haystack, string needle )
strstr() 函数搜索一个字符串在另一个字符串中的第一次出现
该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串则返回
fas。
例:echo strstr("Hello world!","world");
stristr()
stristr()与strstr()功能相同,只是不区分大小写;
例: echo strstr("Hello world!","WORLD");
ltrim()
string ltrim ( string str [, string charlist] )
ltrim 函数删除字符串左侧空格或其他预定义字符;
如果未设置charlist参数,则删除以下字符:
- | - |
---|---|
“\0” | NULL |
“\t” | 制表符 |
“\n” | 换行 |
“\x0B” | 垂直制表符 |
“\r” | 回车 |
” “ | 空格 |
rtrim()
string rtrim ( string str [, string charlist] )
rtrim 函数删除字符串右侧空格或其他预定义字符;
trim()
trim 函数删除字符串两侧空格或其他预定义字符;
strlen() 获取字符串长度
例:
$passwd = "123456";
if(strlen($passwd) < 8){
echo "密码不能少于8位";
}
strtolower() 将字符串转换为小写字母
例:
$url = "HTTP://WWW.WENDOWS.COM/ ";
echo strtolower($url);
strtoupper() 将字符串转换为大写字母
例:
$str = "中文 hello world";
echo strtoupper($str);
strrev() 反转字符串
例:
$str = "hello world";
echo strrev($str);
nl2br() 将字符串中换行 (\n) 转换成 HTML 换行标签 (
)
例:
$str = "hello world";
echo nl2br($str);
strip_tags() 删除字符串中HTML XML PHP 标签
string strip_tags ( string str [, string allowable_tags] )
可选参数 allowable_tags 指定要保留的标签;
例:
$str = "test <a href="http://www.163.com">163</a>";
echo strip_tags($str);
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体
预定义的字符是:
- | - | - |
---|---|---|
& |
(和号) | 成为 & |
" |
(双引号) | 成为 " |
' |
(单引号) | 成为 ' |
< |
(小于) | 成为 < |
> |
(大于) | 成为 > |
例:
$str = "<p> 这是一个段落 </p>";
echo htmlspecialchars($str);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript"> window.onload = function(){ var ajax = null; if (window.XMLHttpRequest) { ajax = new XMLHttpRequest(); } else { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } ajax.open('127.0.0.1/lesson3.php?name=xiaopang',true); //发送请求 ajax.send(); //响应回调 ajax.onreadystatechange = function(){ //readyStatue 表明服务器接到响应 //state 是服务器的状态 if (ajax.readyStatue == 4 && (ajax.state >=200 || ajax.state<300 ||ajax.state == 304)) { document.innerHTML = ajax.responseText; } } } </script>
</head>
<body>
</body>
</html>
<?php
/*
//最常用的 PHP 标记
//标记内部表明是 PHP 环境
//第一个变量
//以 $ 开头,数字字母下划线组成,并且不能用数字作为变量开头。
//而且区分大小写。
$age = 34;
//引用赋值,可以理解为两个变量用的一块控件
//我们一般将 “ & ” 叫为取址符
$age1 = &$age1;
//输出
echo($age1);
//变量的变量
$var_1 = "hello";
$$var_1 = "world";
echo $var_1; //hello
echo $$var_1; //world
echo $hello; //world 变量的变量也可以成为变量 var_1
//识别 HTML 标签
echo "<br />";
//
echo $_SERVER["SERVER_NAME"];
*/
//=======================================================================
// 超全局变量
//=======================================================================
//$_GET 获取 get 请求的参数(前后端命名一定要一致)
// echo $_GET["username"];
// echo $_GET["password"];
//$_POST 获取 post 请求的参数
// echo $_POST["username"];
// echo $_POST["password"];
//=======================================================================
// 常 量
//=======================================================================
//自定义常量,在其他语言里面页脚宏定义
// define('PI', 3.1415928);
// echo PI;
//魔术常量
// echo __LINE__; //显示当前代码是多少行
//=======================================================================
// 数据类型
//=======================================================================
//单双引号的区别
// $name = "pang";
//双引号中默认是不识别的,判定为字符串
// echo "my name is $name";
//单引号不会替换变量,默认内容是字符串
// echo 'my name is $name';
//如果你想要将一个变量替换至字符串中,你需要使用 {} 去包裹起来内容
// echo "my name is {$name}asdasdasdasda";
//定界符 结束符 以'<<<EOD'开头,以‘EOD’结尾,并且结尾符号一定要存在于换行的开头
//主要用于 分隔字符
// $str = <<<EOD
// duang,duang,duang
// EOD;
// echo $str;
//字符串的转义
// $str = "str\$";
// echo $str;
//自动类型转换
//字符串与数字相加,字符串转化规则,从第一位去取,直到取到一个非数字时结束。
// $name = "pang";
// $age = 18;
// echo $name.$age; //pang18
// echo $name+$age; //18 从开始取数字转化为整型,到非数字时停止
//类型相关函数
//gettype() 获取数据类型
// $str = "nihao";
// $age = 19;
// echo gettype($str);
// echo gettype($age);
//is_interger() 确定该数据是否是某类型
// $str = "nihao";
// echo is_integer($str);
// echo is_string($str);
//var_dump() 打印详细数据信息
// $str = "nihao";
// var_dump($str); //string 5 "nihao"
//=======================================================================
// 运算符
//=======================================================================
//拼接赋值 $str = $str.20
// $str .=20;
// echo $str;
//递增递减
//++在前,执行运算前先自身加一
//++在后,先运算完成,再加一
// $age1 = 20;
// $age2 = $age1++;
// $age3 = ++$age1;
// echo $age1; //20
// echo $age2; //20
// echo $age3; //22
//三目运算符
//前面表达式为真,则取前面的值,如果为假,则去后面的值
// $a = 20;
// $b = 15;
// $is_ture = $a > $b?TRUE:FALSE;
// echo $is_ture;
?>
<?php
//=================================================
// 循环
//=================================================
//分支结构
//if..else..
// if (判断语句) {
// # code...
// }elseif (判断语句) {
// # code...
// }
// else{
// # code...
// }
//下面来看一个很特殊的小栗子。
//我们在 if 内部去写一个永远成立的式子。
//之后我们在内部去做++,但是我们出来之后,
//发现出来 A 的值 是 1. B 的 值里面是 31.
//我们也能看见 a 的类型变成了 BOOL 类型。
//所以我们怎么++ , a 的值还是1,大家需要注意一下(判断使用 == 式子就正确了)
// $a = $b = 30;
//
// if ($a = 30 || $b = 30){
// $a++;
// $b++;
// }
// var_dump($a);
// var_dump($b);
// echo $a;
// echo "<hr>";
// echo $b;
//switch case
// switch ($a) {
// case '30':
// # code...
// echo "变量 $a 等于 30,走这里";
// break;
// default:
// # code...
// echo "上面结果全部不符合才走这里"
// break;
// }
//for
// for ($i=0; $i < 10; $i++) {
// # code...
// echo "我是第{$ i}次<br>";
// }
//跳出循环 break continue
// for ($i=0; $i < 10; $i++) {
// # code...
// if($i == 5){
// echo "我是第{$ i}次<br>";
// continue;
// }
// echo "我是第 {$i}次循环";
// }
//
//=================================================
// 函数
//=================================================
//function + 函数名 +(参数列表){
// 函数体
//}
//function sum($a,$b){
// echo $a + $b;
// //return 的函数返回值
// return $a + $b;
//}
//sum(3, 5);
//函数参数有默认值,如果调用的时候不传值,会直接使用默认值
//function funName($value='345'){
// echo $value;
//}
//funName();
//递归函数
//自己调用自己,并且首先返回最后一次结果,之后依次返回
//function fun($n) {
// if ($n == 1) {
// return 1;
// }
// $number = $n * fun($n - 1);
// return $number;
//}
//echo fun(5);
//变量分为局部变量,全局变量和静态变量
//function sum($a){
// //局部变量 : 函数调用结束后立马释放
// $b = 5;
// $b++;
// echo $b;
//
// //静态变量 : 只能初始化一次,静态变量不会立马释放
// static $c = 10;
// $c++;
// echo $c;
//}
//sum();
//sum();
//sum();
//=================================================
// 变量
//=================================================
//全局变量 : 声明在函数外,全局都可以访问
//$name = "asdasda";
//function dosomething(){
// echo $GLOBALS['name'];
//}
//=================================================
// 数组
//=================================================
//关联数组,类似于 oc 中的字典
//$arr = array('name' => 'xiaopang','age' => 'woman') ;
////索引数组
//$arr_1 = array('23','4234','234');
//
//echo $arr['name'];
//var_dump($arr);
//echo $arr_1[0];
//var_dump($arr_1);
////使用系统函数初始化创建数组
////直接赋值生存数组,索引值可以自定义
//$arr_2[0]="asd";
//var_dump($arr_2);
//
//$arr_3['name'] = "qweqwe";
//var_dump($arr_3);
//
//只能识别数字或者字符,字符串默认取第一位,如果是英文字符,则默认是 0
//$lists = range(100, 1);
//print_r($lists); //打印数组
//unset($lists); //释放数组
//
//foreach 遍历数组
//$arr = array('name'=>'xiaopang','age'=>18);
//foreach($arr as $key =>$value){
// echo $key,$value;
//}
//
//数组的排序
//$arr = array('name'=>'xiaopang','age'=>18,'height'=>187);
////sort()排序 如果是字符串就按照 ascii 排序,如果是数字就直接排序,如果有数字,有字符串,数字大于字符串,且字符串按照 ascii 排序
//$arr_2 = sort($arr);
//print_r($arr);
////rsort()降序
////ksort()按照键值 升序排序
////ksort()按照键值 降序排序
////=================================================
//// 字符串
////=================================================
////查找字符串,并且返回当前下标,区分大小写
//$s = strpos("asdaasdasdasd", 'asd');
//echo $s;
////stripos 和 strpos 功能一致,只是不区分大小写
//
////字符串替换
//$str1 = str_replace('3g', 'keji', $str);
//echo $str1;
////str_ireplace($search, $replace, $subject) 和 str_replace 功能一致,只是不区分大小写
?>