PHP基础巩固

变量

1、变量检测

isset可以检测变量是否存在。
注意:对于NUll,isset也返回false。

<?php

if(isset($p)){
    echo '存在';
}else{
    echo '不存在'; //不存在
}
// NULL是指没有值,也没有类型
$a = null;
if(isset($a)){
    echo '存在';
}else{
    echo '不存在'; //不存在
}
$b = '';
if(isset($b)){
    echo '存在'; //存在
}else{
    echo '不存在'; 
}

2、变量类型判断

//获取变量类型

$a = 'hello';
echo gettype($a); //string

$b = 1;
echo gettype($b); //integer

$c = 1.11;
echo gettype($c); //double

$d = null;
echo gettype($d); //NULL
// 判断变量是否是我们想要的类型
// is_int,is_float,is_array

$a = 1;
if(is_int($a)){
    echo 'a是整型'; //a是整型
}else{
    echo 'a不是整型';
}

$b = '123';
if(is_int($b)){
    echo 'b是整型'; 
}else{
    echo 'b不是整型'; //b不是整型
}

3、打印调试变量

<?php

$a = 'hello';
$b = true;
$c = false;
$d = array(1,2,'3');

echo $a.'<br/>'; //hello
echo $b.'<br/>'; //1
echo $c.'<br/>'; //没有打印出值
echo $d.'<br/>'; //Array 可能会报: Notice: Array to string conversion in ...

print_r($d); //Array ( [0] => 1 [1] => 2 [2] => 3 )

var_dump($d); //array(3) { [0]=> int(1) [1]=> int(2) [2]=> string(1) "3" }

4、变量类型转换

PHP中变量的类型是可以随时转换的,非常灵活。最常见的是字符串和数字的转换,字符串与布尔值的转换。

$a = '12';
$a = $a + 3;
var_dump($a); // int(15)

$b = '12.0';
$b = $b + 3;
var_dump($b); // float(15)

// 字符串到数字的转换,从左到右截取,直到碰到不合法的数字,截取出来的部分转换成数字
$c = '12.5aaa99';
$c = $c + 3;
echo $c; // 15.5,可能会报:Notice: A non well formed numeric value encountered in

$d = 123;
$d = $d . 'hello';
echo $d; // 123hello

// 到布尔值的判断,以下值都被当成false
// '','0', 0, 0.0, false, null, array() 

5、传值赋值和引用赋值

$a = 29;
$b = 5;
$b = $a;

var_dump($a,$b); // int(29) int(29)
$b = 'hello';
var_dump($a,$b); // int(29) string(5) "hello"

// 引用赋值,注意"&"符号
$c = &$a;
var_dump($c); //  int(29)
$c = 99;
var_dump($c,$a); // int(99) int(99)

6、销毁变量

$a = 99;
unset($a);
if(isset($a)){
    echo 'a存在';
}else{
    echo 'a不存在'; // a不存在
}
$li = 29;
$wang = &$li;
var_dump($li,$wang); // int(29) int(29)

$wang = 20;
var_dump($li,$wang); // int(20) int(20)

unset($li);
var_dump($li,$wang);  // NULL int(20)

7、动态变量

$liu = '河北';
$boos = 'liu';

echo $boos; // liu
echo $$boos; // 河北

运算符

1、算法运算符

除数不能是0

$a = 10;
$b = 0;
echo $a / $b;  // Warning: Division by zero in ...INF

整数相加超过最大范围会益处转换为浮点数

$a = 32000000000000000000000000;
$b = 32000000000000000000000000;
$c =  $a + $b; 

var_dump($c); // float(6.4E+25)

取模算法时,结果的正负只取决于$a (被除数)

$a = 10;
$b = -3;
echo $a % $b; // 1
$a = -10;
$b = -3;
echo $a % $b; // -1
$a = -10;
$b = 3;
echo $a % $b; // -1

2、比较运算符

凡运算,必有运算结果。比较运算的结果是布尔值。

$a = 5;
$b = 3;
$c = $a > $b;
var_dump($c); // bool(true)
$a = 5;
$b = 3;
$c = $a == $b;
var_dump($c); // bool(false)
// 等于,全等于
$a = 5;
$b = '5';
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
// 全等于要求类型相同,且值相等

3、三元运算符

$a = 15;
$b = 10;
$c = null;

$c = $a > $b ? $a : $b;
echo $c.'<br/>'; // 15

// 利用三元运算符,求3个数中最大的数
$a = 12;
$b = 13;
$c = 14;

$max = ( $t = ($a > $b) ? $a : $b) > $c ? $t : $c;
echo $max; // 14

4、递增递减运算符

$b = 5;
$a = $b++;  //返回b本身的值,然后把b的值加1
var_dump($a,$b); // int(5) int(6)

$b = 5;
$a = $b--;
var_dump($a,$b); // int(5) int(4)
$b = 5;
$a = ++$b; //把b的值加1,然后返回新值
var_dump($a,$b); // int(6) int(6)

5、字符串运算符

$a = 'hello';
$b = 'world';
$c = $a . $b;
echo $c.'<br/>'; // helloworld

$d = 112;
$c = $c . $d;
echo $c; // helloworld112

// 下面哪个运行速度更快?
$a = 'hello';
$b = 'world';
echo $a,$b;     // 这样减少了字符串拼接,更快
echo '<br/>';
echo $a . $b;

控制结构

1、switch case控制结构

$today = 5;
if($today == 1){
    echo '今天是星期一';   
}else if($today == 2){
    echo '今天是星期二';
}else if($today == 3){
    echo '今天是星期三';
}else if($today == 4){
    echo '今天是星期四';
}else if($today == 5){
    echo '今天是星期五';
}else if($today == 6){
    echo '今天是星期六';
}else if($today == 7){
    echo '今天是星期七';
}else{
    echo '你来自火星';
}

// 打印结果:今天是星期五

switch ($today){
    case 1;
        echo '今天是星期一';
    case 2;
        echo '今天是星期二'; 
    case 3;
        echo '今天是星期三';   
    case 4;
        echo '今天是星期四';       
    case 5;
        echo '今天是星期五';   
    case 6;
        echo '今天是星期六';   
    case 7;
        echo '今天是星期七';            
    default:
        echo '你来自火星';
}

// 猜猜最后打印结果?
// 上面打印结果:今天是星期五今天是星期六今天是星期七你来自火星
// 可以看出:一旦遇到判断成功,后面就直接进入了
// 所以,预防这种情况,要在case里加break
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 '你来自火星';
}

switch case 适合用在验证多个可能的值时使用,不适合用在判断范围。
比如60-80分几个,0-59分不及格,81-100分优秀。

2、for循环

// 循环的一般要素:初始化(1),判断(2),执行体(3),修改变量(4)
/*
for(1;2;4){
    3
}
*/
for($i=10;$i>=3;$i-=3){
    echo '喝酒吃肉'.'<br/>';
}
 
echo $i; // 1

等同于

for($i=10;$i>=3;){
    echo '喝酒吃肉'.'<br/>';
    $i-=3;
}

猜你喜欢

转载自blog.csdn.net/github_26672553/article/details/82948884