变量类型的转换
php中变量的类型是可以随时转换的,非常常见的是
字符串==>数字的转换
数字、字符串==>布尔值的转换
转换之后,相等但是不全等。
其他值转成布尔值
以下值都被当成布尔的假,而其他值都被当成布尔的真。
其他值 | 描述 | 转换成布尔值的结果 |
---|---|---|
‘’ | 空字符串 | false |
‘0’ | 字符串0 | false |
0 | 数字0 | false |
0.0 | 浮点型的0 | false |
false | 布尔值假 | false |
NULL | NULL | false |
array() | 空数组 | false |
if ('' == NULL) { //也可以使用flase
echo "空字符串果然假";
}
字符串到数字的转换
字符串到数字的转换,从左到右截取,直到碰到不合法的数字,截取出来的部分转成数字,
开头碰到不合法的数字,转成数字0
$a = 'hello12.5world55';
$a = $a + 3;
var_dump($a); // int 3
$a = 123;
$a = $a . 'hello'; //字符串的拼接使用点
echo "$a"; // 123hello
赋值
赋值分两种:
1.传值赋值:就相当于一个东西,我复制一份给你,但是并不会影响我自己原来的那一份。(新的存储空间)
2.引用赋值:就相当于唯一一个东西,不可复制,只可共享。(地址引用)
变量赋值之传值赋值
$li = 29;
$wang = 23;
$wang = $li;
var_dump($li,$wang); // int 29 int 29
$wang = 'hello';
var_dump($li,$wang); // int 29 string 'hello' (length=5)
变量赋值之引用赋值
$li = 29;
$wang = 23;
$wang = &$li;
var_dump($li,$wang); // int 29 int 29
$wang = 'hello';
var_dump($li,$wang); // string 'hello' (length=5) string 'hello' (length=5)
变量销毁
销毁变量:只是剪断变量对内存地址的引用,并不会销毁变量。
unset(): 销毁变量
isset():判断变量是否已声明
$a = 99;
unset($a);
if (isset($a)) {
echo "a存在";
}else{
echo "a不存在";
}
$li = 29;
$wang = &$li;
var_dump($li,$wang);// 29 29
$wang = 20;
var_dump($li,$wang);// 20 20
unset($li);//销毁后,表示未定义变量,引用错误,
var_dump($li,$wang);// null 20
动态变量名
用变量的值再做变量的名;
//动态变量名
$liubei = '河北人';
$laoda = 'liubei';
echo $laoda,'<br/>',${$laoda}; // liubei 河北人
运算符
三个注意:
- 除数不可为0
- 整数的最大值为四十多亿
- 取模算法时,结果的正负仅取决被除数的正负
// 第一个注意点:
$a = 10;
$b = 0;
echo $a/$b; // Warning: Division by zero 除数不能为0
// 第二个注意点:
$a = 3200000000;
$b = 3200000000;
$c = $a + $b;
var_dump($c); // float 6400000000 超出四十多亿,转换成浮点型
// 第三个注意:
$a = -10; // 换成10,-10各试
$b = 3; // 换成3,-3各试
var_dump($a%$b); //取模算法时,结果的正负仅取决被除数的正负
比较运算符
凡运算,必有结果,比较运算符的运算结果是布尔值
$a = 5;
$b = 3;
$c = ($a > $b);
var_dump($c); // boolean true
$c = ($a==$b);
var_dump($c); // boolean false
//=== 全等于,要求类型相等且值相等
$a = 5;
$b = '5';
var_dump($a == $b);//boolean true
var_dump($a === $b);//boolean flase
$res = 0;//integer,//false Boolean型
if ($res === false) {
echo "没找到";
}else{
echo "找到";
}
三元运算符 ?:
// 给定两个数,帮我找到大的
$a = 13;
$b = 28;
$c = null;
$c = ($a >= $b)?$a : $b;
var_dump($c);
// 运用三元运算符,比较三个数的大小
$a = 3;
$b = 23;
$c = 18;
$d = null;
$d = ($c >= ($d = ($a >= $b)?$a : $b))?$c : $d;
var_dump($d);
逻辑运算符-与或非
某女要求有房且有车,才嫁
$house = true;
$car = false;
if ($house == true) {
if ($car == true) {
echo "嫁";
}else{
echo "不嫁";
}
}else{
echo "遗憾";
}
// 逻辑运算符方法
$house = true;
$car = true;
$res = ($house == true && $car == true);
var_dump($res);
//使用if语句改写
$house = true;
$car = false;
if( ($house == true && $car == true) ){
echo "嫁人";
}else{
echo "不嫁";
}
b女有房或者有车都嫁, ||的意思是起码有一个条件为真
$house = false;
$car = false;
if ($house || $car) {
echo "嫁";
}else{
echo "遗憾saybeybey"; // 遗憾saybeybey
}
递增递减运算符
++或–在变量后面,变量先进行赋值运算后进行自身运算。
++或–在变量前面,变量先进行自身运算后进行赋值运算。
$b = 5;
$a = $b++;
var_dump($a,$b); // int 5, int 6
$b = 5;
$a = $b--;
var_dump($a,$b); // int 5, int 4
$b = 5;
$a = ++$b;
var_dump($a,$b); // int 6, int 6
$b = 5;
$a = --$b;
var_dump($a,$b); // int 4, int 4
字符串运算符
使用点(.)进行字符串的拼接
$a = 'hello';
$b = 'world';
$c = $a . $b;
var_dump($c); //string 'helloworld' (length=10)
$d = 112;
$c = $c . $d;
var_dump($c); // string 'helloworld112' (length=13)
//下面那个运行速度快
$a = 'hello';
$b = 'world';
echo $a,$b;
echo "=====";
echo $a.$b;
赋值运算符
a=3;//这是一个赋值运算。有两个效果,1是把3赋给a = 3;//这是一个赋值运算。有两个效果,1是把3赋给a=3;//这是一个赋值运算。有两个效果,1是把3赋给a,2是返回运算结果。
控制语句
if else
最简单的不是就是控制语句
switch case
适合判断多个值的匹配,不适合用在范围判断
$today = 8 ;
switch ($today) {
case '1':
echo "今天星期一";
break;
case '2':
echo "今天星期二";
break;
case '3':
echo "今天星期三";
break;
case '4':
echo "今天星期四";
break;
case '5':
echo "今天星期五";
break;
case '6':
echo "今天星期六";
break;
case '7':
echo "今天星期日";
break;
default:
echo "你来自火星";
break;
}
while
张三有钱10万,需要经过我的山头。当其携带金钱大于50000时,
每次需要交其总钱数的0.05。当其携带金钱小于50000大于等于5000时,
每次通过需要交5000元。问张三能安全的从我的山头通过几次?
// method one
$money = 100000;
$num = 0;
while ($money > 50000) {
$money *= 0.95;
++$num;
echo '张三第',$num,'次经过路口时,还剩下',$money,'元<br />';
}
while( $money >= 5000 ) {
$money -= 5000;
++$num;
echo '张三第',$num,'次经过路口时,还剩下',$money,'元<br />';
}
// method two
for ($i=100000,$count = 0; $i >= 5000;) {
$count += 1;
if ($i >50000) {
$i *= 0.95;
}else{
$i -= 5000;
}
echo '第',$count,'次经过路口时,还剩下',$i,'元<br />';
}
do while
for
打印99乘法表
for ($i=1; $i <= 9 ; $i++) {
for ($j=1; $j <= $i ; $j++) {
$res = $i * $j;
echo "{$j} x {$i} = {$res} ";
}
echo "<br />";
}
《张丘建算经》成书于公元5世纪,作者是北魏人,
书中最后一道题,堪称亮点,通常也被称为“百钱买百鸡”的问题
民间则流传着县令考问神童的佳话,原文如下:
今有鸡翁一,值钱5;鸡母一,值钱3;鸡雏三,值钱1;
百钱买鸡百只,问鸡翁,母,雏各几何?
for ($g=1; $g <= 20 ; $g++) {
for ($m = 1; $m <= 33; $m++){
$i = 100-($g+$m);
if ($g+$m+$i==100&&($g*5+$m*3+$i/3)==100) {
echo '公母雏各',$g,' ',' ',$m,' ',' ',$i,'<br />';
}
}
}