• 0504 php基础整理 运算符 控制语句 数组 函数


    运算符

    算术运算符

    有以下几个:+ () - * / )  %取余

    注意:注意取余运算%,先取整,再取余

    自增自减运算符: ++ (加加)   -- (减减)

    常规:对数字进行自加1或自减1。

    字符串: 只能自增,且自增的效果就是“下一个字符”

    布尔值递增递减无效

    ull递减无效,递增结果为1

    前加加和后加加的区别:

    ++:先完成变量的递增运算,再取得该变量的值参与别的运算。

    ++:先将原来变量的值临时存储,再将变量值递增,最后再将临时存储的值参与别的运算。

    推论1:如果独立语句中进行自加运算,前自加后自加没有区别 。

    推论2:如果前自加后自加是放在别的语句中,则会有所区别。

      推论3: 前加加比后加加效率略高(在循环中建议使用前加加)。

    比较运算符:

    包括:>   >=    <    <=    ==松散相等    !=    ===严格相等     !==

    =====的区别:

    ==:松散相等,比较的是两个数据“类型转换之后”是否有可能相等,也常常认为是“数据内容是否相同”

    ===:严格相等,全等,只有两个数据的类型和数据的内容都完全一致,才相等。

    常见不同类型的比较(主要指标量类型的数据)——非正常比较

    正常比较——数字的大小比较

    如果有布尔值,转为布尔值比较规则:true > false

    否则,如果有数字转为数字比较

    否则,如果两边都是纯数字字符串,转为数字比较

    否则就按字符串比较

    字符串的比较规则为:按字符的先后顺序依次一个一个比较,发现哪个大,则就表示整体大,后续不再比较

    逻辑运算符:&&   ||   !

    前提:都是针对布尔类型的值进行的运算,如果不是布尔,就会转换为布尔。

    逻辑与:&&

    只有两个都是true,结果才是true只要有一个是false,结果就是false

    逻辑或:||

    只有两个都是false,结果才是false

    只要有一个是true,结果就是true

    逻辑非:

    !true ==> false

    !false ===>true

    字符串运算符:

    只有一个:  .    

    衍生一个:  .=

    会将运算符两边的数据转换为字符串。

    对比js+(具有双重含义,此时就需要一定的“判断”)

    赋值运算符:

    只有一个:=

    衍生多个:+=   -=   *=   /=   %=   .=

    条件(三目)运算符:

    一般的运算符需要2个数据参与

    有几个运算符只需要一个数据参与: ++,   --   !

    则:

    条件运算符就需要至少3个数据参与!

    形式为:数据1  ?  数据2 :数据3

    通常,数据1最终应该是一个布尔值(如果不是,则会当作布尔值来使用)。

     判断语句

    if语句:

      if(条件判断){

      //语句块

      } 

      if else 语句:

      if(条件判断){

      //分支1

      }

      else{

      //分支2

      }

    switch语句:

      switch(一个数据$v1{ //判断此v1变量跟下面的某个是否相等,如果相等,则进入对应进程。

            case  状态值1

            //进程1

            [break;]

            case  状态值2

            //进程2

            [break;]

            case  状态值3

            //进程3

            [break;]

            。。。。。。

            [default //默认进程。]

       }

    应用冲,break通常都会用上;只有一些特殊数据或需求的时候,可能不用。

    如果没有使用break,则一旦某个状态满足,就会继续执行后续状态中的进程代码,而不再判断。

    while循环:

    $v1 = 10; //初始化循环变量

    while$v14 ){ //判断循环变量的条件

        //语句快

        echo  “abc”;

        $v1--

      }

    循环3要素:

    1,循环变量初始化

    2,循环变量判断

    3,循环变量改变

    3 要素通常适用于所有循环过程。

    do while循环

    do{

      //循环体

      }while(条件判断);

      含义:

      先执行一次循环体,然后判断条件,如果条件满足,则继续回去执行循环体,然后再判断,依次类推。

    for循环:

    循环的中断

    这里指的中断,适用于所有循环。

    循环的中断有两种情况:

    break中断: 终止整个循环语句,而跳出循环进入到循环结构之后的语句

    continue中断:跳过本次循环,执行下一次循环

    控制脚本执行进度

    die(“输出内容”)

    含义:终止php脚本的运行(后续代码不再执行),并输出其中的内容

    也可以:die(); die;

    exitdie的同义词。

    die是一种“语言结构”,并非函数,可以不写括号。

    echo也是一种语言结构,而非函数:

    echo (“abc”);

    echo  “abc”;

    echo  “abc”, “def”, 123;

    sleep($n);

    含义:让php脚本停止$n秒,然后继续执行。

    数组基础

    php中,数组的下标可以是整数,或字符串。

    php中,数组的元素顺序不是由下标决定,而是由其“加入”的顺序决定。

    定义:
    $arr1 = array(元素1,元素2,。。。。。 );

    array(1,  5,  1.1,  “abc”,  true,  false); //可以存储任何数据,此时为“默认下标”,

    array(2=>1,  5=>5,  3=>1.1,  7=>“abc”,  0=>true);//下标可以任意设定(无需顺序,无需连续)

    //默认下标规则:前面已经用过的最大数字下标+1

    array(2=>1,  5,  1=>1.1,  “abc”,  0=>true)//可以加下标,也可以不加(默认下标),

    下标分别是:2,3,1,4,0

    array(2.7=>1,  ‘dd’=>5,  1=>1.1,  “abc”,  0=>true)

    //浮点数下标为自动转换为整数,且直接抹掉小数

    //纯数字字符串下标,当作数字看待,

    //则此时下标为:2, ‘dd’, 11, 12, 13

    array(2=>1,  ‘dd’=>5,  true=>1.1,  “abc”,  false=>true)//布尔值当下标,则true1false0

    array(2=>1,  ‘dd’=>5,  2=>1.1,  “abc”,  true)//如果下标跟前面的重复,则单纯覆盖前面同名下标的值

    //此时相当于为:array(2=>1.1,  ‘dd’=>5,  “abc”,  true)

    数组的分类

    从键值关系:

    关联数组:通常是指下标为字符串,并且该字符串大体可以表达出数据的含义的数组。

    例:$person = array(

        “name” => “小花”,  

        “age”=>18,

        “edu” => “大学毕业” 

      );

    索引数组:

    通常是指一个数组的下标是严格的从0开始的连续的数字下标——跟js数组一样。

    从数组层次来分:

    一维数组:

    就是一个数组中的每一个元素值,都是一个普通值(非数组值)

    $arr1 = array(

        “name” => “小花”,  

        “age”=>18,

        “edu” => “大学毕业” 

    );

    二维数组:

    一个数组中的每一项,又是一个一维数组。

    $arr1 = array(

        “name” => array(‘小花’,     ‘小芳’,   ‘小明’, );  

        “age”=> array(18,      22,       19),

        “edu” => array(“大学毕业”,  ‘中学’,    ‘小学’)

    );

    多维数组:

    依此类推。。。

    数组遍历

    遍历基本语法

    foreach( $arr   as   [ $key  => ] $value ) //$key可以称为键变量,$value可以称为值变量。

    {

    //这里就可以对$key  $value 进行所有可能的操作——因为他们就是一个变量

    //$key 代表每次取得元素的下标,可能是数字,也可以能是字符串

    //$value 代表每次取得元素的值,可能是各种类型。

    //此循环结构会从数组的第一项一直遍历循环到最后一项,然后结束。

    }

    foreach 遍历细节探讨

    foreach也是正常的循环语法结构,可以有break和continue等操作。

    遍历过程中值变量默认的传值方式是值传递。

    遍历过程中值变量可以人为设定为引用传递

    foreach($arr as $key => &$value){ ... }

    键变量不可以设定为引用传递

    foreach默认是原数组上进行遍历。但如果在遍历过程中对数组进行了某种修改或某种指针性操作(就是指前面的指针函数),则会复制数组后在复制的数组上继续遍历循环。

    foreach中如果值变量是引用传递,则无论如何都是在原数组上进行。

    数组排序思想介绍

    冒泡排序

    一般性逻辑描述:

    1,对该数组从第一个元素开始,从左到右,相邻的2个元素比较大小:如果左边的比右边的大,则将他们俩交换位置,结果:

    <?php
     $arr2 = array(5,15,3,4,9,11);
     $len = count($arr2);
    //1,需要进行n-1趟的“冒泡”比较过程。
    echo "<br/> 排序之前:";
    print_r($arr2);
    for($i = 0; $i<$len-1;++$i){
        //设定比较的躺数
        //2, 每一趟的比较都前一趟少比一次,每一趟需要比较n-1次
        for($k=0;$k<$len-1-$i;++$k){
            //设定本趟比较的次数
            //这里实现下标为$k和下标为$k+1这两项的比较:
            if($arr2[$k]>$arr2[$k+1]){
                $temp = $arr2[$k];
                $arr2[$k]=$arr2[$k+1];
                $arr2[$k+1] = $temp;
            }
        }
    }
    echo "<br/>排序之后:";
    print_r($arr2);
    
    ?>
    冒泡排序

    选择排序

    一般性逻辑描述:

    1趟:取得该数组中的最大值及其下标,然后跟该数组的最后一项“交换”(倒数第1项确定)

    2趟:取得该数组中除最后1项中的最大值及其下标,然后跟倒数第2项交换(倒数第2项确定)

    3趟:取得该数组中除最后2项中的最大值及其下标,然后跟倒数第3项交换(倒数第3项确定)

    数组查找:

    就是从一个数组中找一个元素的数据(可能是找下标,也可以是找数据值)

    数组的查找通常有2种需求:

    1:判断要找的数据是否存在。

    2:找出要找的数据的位置(下标)

    顺序查找

    从一个数组中按顺序找出一个元素(下标或值)

    二分查找

    二分查找的前提:

    1,针对一个已经进行了排序的数组(即里面的数据已经是有序了)

    2,是连续的索引数组,比如下标为:0, 1, 2, 3, ......

    函数

    基本使用

    函数定义形式

    function  函数名 (形参1,形参2.... ){

        //函数体(代码块)

      }

    函数调用形式

    本质上就是使用一个名字来达到执行其中函数中的代码的作用。通常可以分两种情形的调用:

    第一种:没有返回值的函数,则调用语句是独立语句:

    函数名(实参1,实参2, .... ); //实参个数应该跟形参有匹配性。

    第二种:有返回值的函数,则调用语句,通常会“混杂”在别的语句中,并将要将该调用语句当作一个“数据”来使用:

    A$v1 =  函数名(); //赋值给其他变量;这里省略实参语法,下同。

    B$v1 =  函数名() * 3 + 6; //参与运算,然后再赋值;

    Cecho  函数名(); //直接输出

    Decho  函数名() * 3 + 6; //参与运算,然后再输出

    E$v1 = 函数名2( 函数名() , 实参2,实参3.... ); //当作实参使用

    实际上,一个变量(数据)也只有这几种场合的使用情况。

    函数调用形式

    本质上就是使用一个名字来达到执行其中函数中的代码的作用。通常可以分两种情形的调用:

    第一种:没有返回值的函数,则调用语句是独立语句:

    函数名(实参1,实参2, .... ); //实参个数应该跟形参有匹配性。

    第二种:有返回值的函数,则调用语句,通常会“混杂”在别的语句中,并将要将该调用语句当作一个“数据”来使用:

    A$v1 =  函数名(); //赋值给其他变量;这里省略实参语法,下同。

    B$v1 =  函数名() * 3 + 6; //参与运算,然后再赋值;

    Cecho  函数名(); //直接输出

    Decho  函数名() * 3 + 6; //参与运算,然后再输出

    E$v1 = 函数名2( 函数名() , 实参2,实参3.... ); //当作实参使用

    实际上,一个变量(数据)也只有这几种场合的使用情况。

    函数参数问题

    一个函数,

    在定义时,有形式参数(形参);

    1,形参一定是一个变量名!

    2,该变量名只能是在该函数中有效的变量名;

    3,而且只在该函数调用并执行时有效,函数结束,通常这些变量也就“销毁”。

    在调用时,有实际参数(实参)。

    实参就是一个“实际数据”,

    该数据可以是一个“直接数据”(比如5”abc”),也可以是一个变量中存储的数据。

    实参的作用是将其数据“赋值给”形参变量。

    实参跟形参之间通常应该有个一一对应”关系:

    定义形式:   function  函数名(形参1,形参2...... ){ 。。。。}

    调用形式:    函数名(实参1,实参2.....

  • 相关阅读:
    2018陕西省高三教学质量检测三参考答案图片版
    2018年宝鸡市三检理科数学题目解答
    2018年宝鸡市三检文科数学题目解答
    构建flutter环境并实现属于我们的hello world
    关于react-native项目在MacBookPro环境下打包成IPA
    关于react-native在MacBookPro环境下的安装
    react-native---rn中的修饰组件(TouchableHightlight、TouchableOpacity、TouchableNativeFeedback等)
    px转换成bp单位的工具函数
    跟我一起使用android Studio打包react-native项目的APK
    undefined is not an object(evaluating '_react3.default.PropTypes.shape)
  • 原文地址:https://www.cnblogs.com/baobaoa/p/8989780.html
Copyright © 2020-2023  润新知