超文本预处理语言
Linux+Apache+Mysql+php/python/perl
php官网
php官网
http:www.php.com;
本地:localhost; IP:127.0.0.1;
80:http的端口号; 443:https的端口号 21:ftp的端口号
1.php的运行环境要有php+mysql+appach
phpStudy
集成环境;
wampServer
集成环境;
<?php echo "我爱你,中国"; ?>
函数 | 解释 |
---|---|
echo("","") | 输出多个 |
print() | 只能输出一个 |
printf(模板,变量) | 输出多个 |
print_r(arr) | 输出数组 |
单行: # 或 // 多行: /* */
1.声明:$name="jiajia"; 2.不能以数字开头,不能是关键字、由字母数字下划线组成 3.类型: bool(布尔):true,false str(字符串): ""; int(整数): 123 float(浮点数) 45.23 4.查看变量的类型:var_dump() 5.使用变量的时候也要带$符号 6.类型强制转换 (int)(变量) (string)(变量) (float)(变量) (bool)(变量)
1.算术运算符 2.赋值运算符 3.比较运算符 4.三元运算符 5.逻辑运算符 6.字符串运算符 7.错误控制运算符 算术运算符
+ 加 $x = 2; $y = $x+1; $y = 3 - 减 $x = 2; $y = $x-1; $y = 1 * 乘 $x = 2; $y = $x*3; $y = 6 / 除,返回结果为浮点类型 $x = 6; $y = $x/3; $y = 2 % 求余,返回结果为浮点类型 $x = 6; $y = $x%4; $y = 2 ++ 递加,分为前加和后加 对布尔值和 NULL 无效 $x = 2; ++$x;(前加) $x++;(后加) $x = 3 -- 递减,分为前递减和后递减 对布尔值和 NULL 无效 $x = 2; --$x;(前减) $x--;(后减) $x = 1 对于前加和后加,执行后的结果都是变量加1,其区别在于执行时返回结果不一样,参考下面两个例子: <?php $x = 2; echo $x++; //输出2 echo $x; //输出3 $x = 2; echo ++$x; //输出3 echo $x; //输出3 ?> 递减同理。 赋值运算符 赋值运算符“=”用于赋值运算,赋值运算符的作用在于把右边的值赋值给左边变量: $x = 2; 该例子将整型值 2 赋值给变量 $x。
赋值运算符可以嵌套使用: <?php $y = ($x = 2) + 5; //结果为 $x=2,$y=7 ?> 赋值运算符的一些变形使用方法: $y += $x; 实际上它等同于: $y = $y + $x; 同理有: $y -= $x; $y *= $x; $y /= $x; $y %= $x; $y .= $x; // . 为连接运算符,见字符串运算符
运算符 说明 例子 运算结果 == 等于 2 == 3 FALSE != 不等于,也可写作<> 2 == 3 TRUE > 大于 2 > 3 FALSE < 小于 2 < 3 TRUE >= 大于等于 2 >= 3 FALSE <= 小于等于 2 <= 3 TRUE 比较运算符也可用于字符串比较。
三元可以视作是特殊的比较运算符:
(expr1) ? (expr2) : (expr3) 语法解释:在 expr1 求值为 TRUE 时整个表达式的值为 expr2,否则为 expr3。 例子: $y = ($x == 2) ? $x : 1; 该例子判断变量$x的值是否等于2,如果$x等于2,那么$y的值就等于$x(也就是等于2),反之$y就等于1。 提示 为了避免错误,将三元运算符各表达式用括号括起来是个不错的主意。
运算符 说明 例子 运算结果 && 逻辑与,也可写作 and $x = 2; $y = 6; $x && $y > 5 FALSE || 逻辑或,也可写作 or $x = 2; $y = 6; $x && $y > 5 TRUE ! 逻辑非,取逻辑的反面 $x = 2; $y = 6; !($x > $y) TRUE 连接运算符 字符串运算符主要指连接运算符“.”,它将连接其左右参数字符串。 例子: $x = "beijing"; $y = $x."你好"; //$y = "beijing你好" 如该例子所示,字符和变量共同输出时需要使用连接运算符。
$x = "beijing"; $x .="你好"; //$x = "beijing你好”
错误控制运算符:@,当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
if 流程控制允许按照条件执行代码片段。if 流程控制分为三类: if if…else elseif if 语法: if (expr){ statement } 例子: <?php if ($x > $y) echo "x 大于 y"; ?>
语法: if (expr){ statement1 } else { statement2 } 它表示只要 expr 成立,则执行 statement1 ,否则执行 statement2 。 例子:
<?php if ($x > $y) echo "x 大于 y"; } else { echo "x 小于等于 y"; } ?>
语法: if (expr){ statement1 } elseif (expr2) { statement2 } else { statement3 } 它表示只要 expr1 成立,则执行 statement1 ,否则检测 expr2 ,如果 expr2 成立则执行 statement2 。如果 expr2 也不成立,则执行 statement3 。 例子:
<?php if ($x > $y) { echo "x 大于 y"; } elseif ($x == $x) { echo "x 等于 y"; } else { echo "x 小于 y"; } ?>
elseif 可以有多个,以实现更多条件的选择,但多数情况下,条件更多时,我们可以选择switch来实现。
while循环 while循环是PHP中最简单的循环,其基本格式为: while (expr){ statement } //或者 while (expr): statement endwhile; 该语法表示,只要expr表达式为TRUE,那么就一直执行statement直到expr为FALSE为止,statement表示要执行的 动作或逻辑。 例子:
<?php $i = 1; while ($i <= 10) { echo $i; $i++; } ?>
该例子循环输出1到10。
for循环 for循环是PHP中更为复杂的循环,其语法如下: for (expr1; expr2; expr3){ statement } 下面的例子依然输出1到10:
<?php for ($i = 1; $i <= 10; $i++) { echo $i; } ?>
语法解读 第一个表达式(expr1)在循环开始前无条件求值一次 expr2 在每次循环开始前求值,如果值为 TRUE,则继续循环,执行嵌套的循环语句; 如果值为 FALSE,则终止循环。 expr3 在每次循环之后被求值(执行) 每个表达式都可以为空。如果expr2 为空意则将无限循环下去,但可以通过break来结束循环:
<?php for ($i = 1; ; $i++) { if ($i > 10) { break; } echo $i; } ?>
提示 在使用循环语句的时候,我们通常要注意不要无限循环而造成程序“僵死”,另外还要注意循环条件 (循环判断表达式),以确保循环结果正确。
计算100以内偶数和,用while 与for循环各实现一次
<?php $num = 1; $total =0; while($num<=100){ if($num%2==0){ $total+=$num; } $num++; } echo "1-100偶数和为$total<br>"; $total=0; for($i=0;$i<=100;$i++){ if($i%2==0){ $total+=$i; } } echo "1-100偶数和为$total<br>"; ?>
数组(array)是 PHP 中一个非常重要的概念,我们可以把数组看做一系列类似的数据的集合, 实际上数组是一个有序图。
使用 array() 语言结构创建数组:
<?php $arr_age1 = array(18, 20, 25); // 或者: $arr_age2 = array("wang"=>18, "li"=>20, "zhang"=>25); // 空数组: $arr_age3 =array(); ?>
也可以使用数组控制器 [] 来创建数组:
<?php $arr_age1[] = 18; $arr_age1[] = 20; $arr_age1[] = 25; // 或者: $arr_age2["wang"] = 18; $arr_age2["li"] = 20; $arr_age2["zhang"] = 25; ?>
数组实体都包含两项:键名和值。 在下面创建数组的例子中: $arr_age1 = array(18, 20, 25); 我们给 $arr_age1 分配了 3 个数组单元(也称元素),其值分别是 18、20 和 25。 系统会自动给这 3 个数组单元分配 3 个数字序号,分别为 0、1 和 2。即 $arr_age1 数组的完整结构为: Array ( [0] => 18 [1] => 20 [2] => 25 ) 这个系统自动分配的序号称为键名,这种键名为数字 ID 的数组称为 索引数组( indexed array ) 。 当然也可以手动指定键名: $arr_age1 = array( 0 => 18, 1 => 20, 2 => 25 ); 提示 手动指定键名可以不从 0 开始,也可以不用按数字顺序来指定键名。 当一个新单元加入数组而没有指定健名时,系统将自动的在现有数组中最大的数字键中加 1 ,作为新单元的键名。 当使用字符串而非数字索引作为键名时,这种数组称为 关联数组( associative array ) : $arr_age2 = array("wang"=>18, "li"=>20, "zhang"=>25); 但在 PHP 中,这两种数组没有明显的界限,二者可以混合使用。注意关联数组中对于键名大小写是敏感的。
可以使用如下方式访问输出数组单元值: echo $arr_age1[0]; //输出:18 echo $arr_age2["wang"]; //输出:18 某些情况下为了调试,可能需要输出整个数组的数据及结构,这时候需要使用 print_r() 或 var_dump() 函数,具体参见《PHP 打印输出数组内容及结构 print_r 与 var_dump 函数》
可以象操作普通变量一样操作数组单元,如:
<?php $arr_age2 = array("wang"=>18, "li"=>20, "zhang"=>25); $arr_age2["wang"] = $arr_age2["wang"] + 10; ?>
现在 $arr_age2 为: Array ( [wang] => 28 [li] => 20 [zhang] => 25 ) 检查一个数组单元是被设定,请使用 isset() 。
使用 unset() 函数来销毁一个数组单元或整个数组: <?php unset($arr_age1[0]); unset($arr_age1); ?>
print_r() 和 var_dump() 函数可以打印输出整个数组内容及结构。 print_r() 利用 print_r() 函数可以打印输出整个数组内容及结构,按照一定格式显示键和元素。 注意 print_r() 函数不仅是只用于打印,实际它是用于打印关于变量的易于理解的信息。 语法: bool print_r( mixed expression ) 例子:
<?php $arr_age = array(18, 20, 25); print_r($arr_age); ?>
运行该例子输出: Array ( [0] => 18 [1] => 20 [2] => 25 ) 提示 查看输出结果的网页源代码,可以看到更易读的格式: Array ( [0] => 18 [1] => 20 [2] => 25 )
同 print_r() 函数一样,var_dump() 函数也可以用于打印数组的数据及结构。不过 var_dump() 函数功能比 print_r() 更强大,可以同时打印多个变量且给出变量的类型信息。 例子:
<?php $arr_age = array(18, 20, 25); var_dump($arr_age); ?>
运行该例子输出: array(3) { [0]=> int(18) [1]=> int(20) [2]=> int(25) } print_r() 和 var_dump() 函数一般是用于调试程序使用,更多情况是使用 echo 来输出具体的数组单元值。 foreach()
PHP foreach() 语法结构用于遍历操作或输出数组,foreach() 仅能用于遍历数组或对象,当试图将其用 于其它数据类型或者一个未初始化的变量时会产生错误。 语法: foreach (array as $value) statement // 或者: foreach (array as $key => $value) statement 上述语法中,每次循环将当前单元的值赋给 $value 并且数组内部的指针向前移一步。 在第二种语法格式中还将当前单元的键名也会在每次循环中赋给变量 $key。 例子:
<?php $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); foreach ($arr_age as $age) { echo $age,'<br />'; } ?>
运行该例子输出: 18 20 25 使用数组键值
<?php $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); foreach ($arr_age as $key=>$age) { echo $key,': ',$age,'<br />'; } ?>
运行例子输出: wang: 18 li: 20 zhang: 25 &引用符号
<?php $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); // foreach ($arr_age as $age) { foreach ($arr_age as &$age) { $age = $age+10; echo $age,'<br />'; } // 输出原数组 print_r($arr_age); ?>
运行例子输出: 28 30 35 Array ( [wang] => 18 [li] => 20 [zhang] => 25 ) 要在 foreach 中修改原数组元素,可以通过引用来实现,将上面的例子更改为:
<?php $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); foreach ($arr_age as &$age) { $age = $age+10; echo $age,'<br />'; } // 输出原数组 print_r($arr_age); ?>
运行例子输出: 18 20 25 Array ( [wang] => 28 [li] => 30 [zhang] => 35 )
PHP 数组是通过哈希表(HashTable)表实现的,因此 foreach 遍历数组时是依据元素添加的先后顺序来进行的。如果想按照索引大小遍历,应该使用 for() 循环遍历。
如果是操作 连续键值 的数组,也可以采用 for() 循环来遍历数组:
<?php $arr_age = array(18, 20, 25); $num = count($arr_age); for($i = 0; $i < $num; $i++){ echo $arr_age[$i]."<br />"; } ?>
运行例子输出如下: 18 20 25 count 计算数组中的数量 案例 将数组 遍历输出下列形式: wang:18 li:20 zhang:25 $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); foreach($arr_age as $key=>$value){ echo "$key:$value<br>"; } 排序 将下列字母排序 'a','c','u','b','e','p','f','z' 结构为 Array ( [0] => a [1] => b [2] => c [3] => e [4] => f [5] => p [6] => u [7] => z ) 提示 sort($arr)正序 rsort($arr)倒序 提示 natsort() 自然排序 $arr = array('a12','c1','a1','u','b','a2','e','p','f','z'); sort($arr); print_r($arr);