Blogger Information
Blog 22
fans 1
comment 0
visits 20156
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
0107作业-常量创建与访问、单双引号的区别、数组的常用操作和分支控制的基本形式-php培训十期线上班
Dseven
Original
662 people have browsed it

1.常量的创建与访问

1.1常量的定义

常量是一种特殊的变量,仅允许初始化一次,不允许更新,可以理解为只读变量,无作用域限制,常用来表示程序状态或者数据共享。
常量名前不需要加$,但是常量名仍然要遵守PHP标识符的命名,常量名通常为大写字母。

1.2常量的创建

函数创建:define("常量名","常量值");,该方法不能在类中创建常量,可以在常量值参数中使用表达式,比如用一个字符串加变量拼接的方式来作为常量值参数,define('常量名','某字符串'.某变量);
指令创建:const 常量名 ="常量值";,该方法不能用表达式,只能用字面量。

1.3代码实例和运行效果

  1. $str = 'Dseven';
  2. define('USERNAME','Dseven');//用define()方法创建常量
  3. echo '用define()方法创建的常量USERNAME的值是:'.USERNAME.'<br>';
  4. define('EMAIL',$str.'@php.cn');//用define()方法创建常量,并且常量值参数为表达式
  5. echo '用define()方法,并用表达式作为参数,创建的常量EMAIL的值是:'.EMAIL.'<br>';
  6. const USERAGE = 18;//用const方法创建常量
  7. echo '用const方法创建的常量USERNAME的值是:'.USERAGE.'<br>';

2.单引号与双引号

2.1两者的共同点

都可以用来做字符串的定界符

2.2两者的不同点

单引号内部的值按字面量形式进行处理,即使包裹的有变量也不解析,只原样输出,可以理解为所见即所得。
双引号内部的值,将被解析,如果内部包裹有变量,可以将其值解析出来作为字符串的一部分。
双引号内部的变量通常用{}进行包裹,如果不包裹,变量和其它字符串贴着时则无法解析。
双引号内部需要用到双引号或者变量符$等,要用转义符/进行转义,它同样可以被解析。

2.3代码实例和运行效果

  1. $str = 'apple';
  2. echo '1.我爱吃$str啊';//变量在单引号内,将作为字符串原样输出
  3. echo '<br>';
  4. echo '2.我爱吃'.$str.'啊';//变量在单引号外,并用连接符.进行连接。
  5. echo '<br>';
  6. echo "3.我爱吃{$str}啊";//变量名用{}包裹样式1,双引号可以解析它的值,并输出
  7. echo '<br>';
  8. echo "4.我爱吃${str}啊";//变量名用{}包裹样式2,双引号可以解析它的值,并输出
  9. echo '<br>';
  10. echo "5.我爱吃$str";//变量名不用{}包裹,后面无字符,此时可以正常输出
  11. echo '<br>';
  12. echo "6.我爱吃$str啊";//变量名不用{}包裹,并与后面的字符相邻,将出现错误,无法输出变量

3.索引数组与关联数组的常用操作

3.1创建数组

3.1.1索引数组的创建
  1. $arrNum1 = [1,2,3];//用字面量赋值创建索引数组
  2. echo '用字面量赋值创建的索引数组:'.print_r ($arrNum1,true).'<br>';
  3. $arrNum2 = array('a','b','c');//用函数赋值
  4. echo '用函数赋值创建的索引数组:'.print_r ($arrNum2,true).'<br>';
  5. $arrNum3[] = 'Peter';//逐个给索引数组元素赋值
  6. $arrNum3[] = 'Ben';
  7. $arrNum3[] = 'Joe';
  8. echo '用逐个赋值创建的索引数组:'.print_r($arrNum3,true).'<br>';
  9. $arrNum4 = [0=>'volvo',1=>'bmw',2=>'toyota'];//用键值对赋值创建索引数组
  10. echo '用键值对赋值创建的索引数组:'.print_r ($arrNum4,true).'<br>';

3.1.2关联数组的创建
  1. $arrInfo = ['id'=>100,'name'=>'小张','grade'=>96];
  2. echo '用键值对赋值创建的关联数组:'.print_r($arrInfo,true).'<br>';
  3. $arrInfo1 = array('id'=>101,'name'=>'小李','grade'=>100);
  4. echo '用函数赋值创建的关联数组:'.print_r($arrInfo1,true).'<br>';
  5. $arrInfo2['id'] = 102;
  6. $arrInfo2['name'] = '小王';
  7. $arrInfo2['grade'] = 90;
  8. echo '用逐个赋值创建的关联数组:'.print_r($arrInfo2,true).'<br>';

3.1.2多维数组的创建
  1. $arrInfo = ['id'=>100,'name'=>'小张','grade'=>96];
  2. $arrInfo1 = array('id'=>101,'name'=>'小李','grade'=>100);
  3. $arrInfo2['id'] = 102;
  4. $arrInfo2['name'] = '小王';
  5. $arrInfo2['grade'] = 90;
  6. $arrTable = [$arrInfo,$arrInfo1,$arrInfo2];
  7. echo '<pre>多维数组创建方式1:'.print_r($arrTable,true).'</pre>><br>';
  8. $arrTable1 = [
  9. ['id'=>100,'name'=>'小张','grade'=>96],
  10. ['id'=>101,'name'=>'小李','grade'=>76],
  11. ['id'=>102,'name'=>'小王','grade'=>91],
  12. ['id'=>103,'name'=>'小赵','grade'=>86]
  13. ];
  14. echo '<pre>多维数组创建方式2:'.print_r($arrTable1,true).'</pre><br>';

3.2索引数组的遍历

3.2.1索引数组的遍历
  1. $arrNum1 = [1,2,3];
  2. print_r($arrNum1);
  3. echo '<br>';
  4. foreach($arrNum1 as $item){
  5. echo $item.'<br>';
  6. }
  7. echo '这是遍历索引数组值<hr>';
  8. $arrNum1 = [1,2,3];
  9. print_r($arrNum1);
  10. echo '<br>';
  11. foreach($arrNum1 as $key=>$item){
  12. echo $key.'=>'.$item.'<br>';
  13. }
  14. echo '这是遍历索引数组键和值<hr>';

3.2.2关联数组的遍历
  1. $arrInfo = ['id'=>100,'name'=>'小张','grade'=>96];
  2. print_r($arrInfo);
  3. echo '<br>';
  4. foreach($arrInfo as $item=>$value){//as后面以键值对形式出现,可以遍历关联数组的键名和值
  5. echo $item.'=>'.$value.'<br>';
  6. }
  7. echo '这是遍历关联数组的键和值<hr>';
  8. foreach($arrInfo as $value){//as后面只有一个变量时,只能遍历关联数组的值
  9. echo $value.'<br>';
  10. }
  11. echo '这是遍历关联数组的值<hr>';

3.2.3多维数组的遍历
  1. $arrTable1 = [
  2. ['id'=>100,'name'=>'小张','grade'=>96],
  3. ['id'=>101,'name'=>'小李','grade'=>76],
  4. ['id'=>102,'name'=>'小王','grade'=>91],
  5. ['id'=>103,'name'=>'小赵','grade'=>86]
  6. ];
  7. foreach($arrTable1 as $key => $value){
  8. echo '<pre>'.$key.'=>'.print_r($value,true).'</pre>';
  9. }
  10. echo '这次遍历取出来的是第一层键值对,其中值是数组<hr>';
  11. foreach($arrTable1 as $key => $value){
  12. foreach($value as $key1 => $item){
  13. echo '<pre>'.$key1.'=>'.print_r($item,true).'</pre>';
  14. }
  15. }
  16. echo '这次遍历取出来的是第二层键值对,其中值是一维数组的值<hr>';

3.3数组元素与变量之间的转换

3.3.1数组转换为变量

数组转为变量需要使用extract(array,extractrules,prefix)函数,其中array参数是拟进行变化的数组名,extract_rules为拟变化的数组中键名有问题时的处理方式,prefix参数为变量前缀且其与键名之间自动加”“。

  1. $arrNum1 = [1,2,3];
  2. $arrInfo = ['id'=>100,'name'=>'小张','grade'=>96];
  3. $arrTable1 = [
  4. ['id'=>100,'name'=>'小张','grade'=>96],
  5. ['id'=>101,'name'=>'小李','grade'=>76],
  6. ['id'=>102,'name'=>'小王','grade'=>91],
  7. ['id'=>103,'name'=>'小赵','grade'=>86]
  8. ];
  9. //索引数组键名为数字,不能直接做为变量名,需要使用extract(array,extract_rules,prefix)中加上第二个和第三个参数,
  10. //第二个参数extract_rules的值EXTR_PREFIX_INVALID 表示仅在不合法或数字变量名前加上前缀 prefix
  11. //第三个参数prefix可以输入准备加的前缀名
  12. echo 'extract($arrNum1)返回值的类型是:'.gettype(extract($arrNum1)).'<br>';
  13. echo '$arrNum1转换成的变量数量是:'.print_r(extract($arrNum1,EXTR_PREFIX_INVALID,num),true).'<br>';
  14. echo "转换成的变量是:<br>\$numOne = $num_0;<br>\$numTwo = $num_1;<br>\$numThr = $num_2;<br>";
  15. echo '<hr>';
  16. //关联数组的键名如果符合变量命名的规范,可以直接用extract(array),而不需要加后面的参数
  17. echo 'extract($arrInfo)返回值的类型是:'.gettype(extract($arrInfo)).'<br>';
  18. echo '$arrInfo转换成的变量数量是:'.print_r(extract($arrInfo),true).'<br>';
  19. echo "转换成的变量是:<br>\$id = $id;<br>\$name = $name;<br>\$grade = $grade;<br>";
  20. echo '<hr>';
  21. //二维数组也可转化为变量,不过变量是一个一维数组
  22. echo 'extract($arrTable1)返回值的类型是:'.gettype(extract($arrTable1)).'<br>';
  23. echo '$arrTable1转换成的变量数量是:'.print_r(extract($arrTable1,EXTR_PREFIX_INVALID,arr),true).'<br>';
  24. echo '转换成的变量是:<br>';
  25. echo '$arr0 = '.print_r($arr_0,true).'<br>';
  26. echo '$arr1 = '.print_r($arr_1,true).'<br>';
  27. echo '$arr2 = '.print_r($arr_2,true).'<br>';
  28. echo '$arr3 = '.print_r($arr_3,true).'<br>';
  29. echo '<hr>';
  30. //用list()是数组与变量进行绑定,也可以将数组变换成变量,只用于索引数组,且假定数字索引从0开始
  31. list($num1,$num2,$num3) = $arrNum1;
  32. echo '$num1='.$num1.'<br>';
  33. echo '$num2='.$num2.'<br>';
  34. echo '$num3='.$num3.'<br>';

3.3.2变量转换成数组

变量转换成数组要使用compact() 函数。该函数创建一个由参数所带变量组成的数组,如果参数中存在数组,该数组中变量的值也会被获取。本函数返回的数组是一个关联数组,键名为函数的参数,键值为参数中变量的值。本函数执行的行为与extract()函数正好相反。
任何没有变量名与之对应的字符串都被略过。

  1. //将变量转换为数组
  2. $id = 100;
  3. $name = '小张';
  4. $grade = 96;
  5. $arrTable = compact('id','name','grade');//此处引号内不要写$
  6. print_r($arrTable);
  7. echo '<hr>';
  8. //将数组变量转换为二维数组
  9. $arrInfo = ['id'=>100,'name'=>'小张','grade'=>96];
  10. $arrInfo1 = ['id'=>101,'name'=>'小李','grade'=>76];
  11. $arrTable1 = compact('arrInfo','arrInfo1','a','id');//参数a无变量名与之对应自动被忽略
  12. echo '<pre>'.print_r($arrTable1,true).'</pre><br>';

3.4索引数组与字符串相互转换

  1. //将数组转换成字符串
  2. $arrInfo = ['id'=>100,'name'=>'小张','grade'=>96];//关联数组转换成字符串,只取里面的值,索引数组可用同样的方法转换成字符串。
  3. $sql = implode('=',$arrInfo);
  4. echo '待转换的数组是:'.print_r($arrInfo,true).'使用的胶合符是:=<br>';
  5. echo '转换完成的字符串$sql的内容是:'.$sql.'<hr>';
  6. //将字符串转换成索引数组
  7. $name = 'Peter,Ben,Joe';
  8. $arrName = explode(',',$name);
  9. echo '待转换的字符串为:'.$name.'使用的分隔符是:,';
  10. echo '<pre>转换完成的数组是:<br>'.print_r($arrName,true).'</pre><br>';
  11. echo '<hr>';

3.5将关联数组转为索引数组

  1. $arrInfo = ['id'=>100,'name'=>'小张','grade'=>96];$arrIndex = array_values($arrInfo);//只从关联数组中取值echo '待转换的关联数组是:'.print_r($arrInfo,true).'<br>';echo '转换成的索引数组是:'.print_r($arrIndex,true);

4.分支控制的所有形式的基本实现

4.1 if分支

  1. $num = 10;
  2. if($num>5){
  3. echo '进入大于5的分支';
  4. }else{
  5. echo '进入小于等于5的分支';
  6. }

4.2 if elseif分支

  1. $num = 10;
  2. if($num<3){
  3. echo '数量少于3';
  4. }elseif($num>=3&&$num<5){
  5. echo '数量大于等于3且小于5';
  6. }elseif($num>=5&&$num<15){
  7. echo '数量大于等于5且小于15';
  8. }else{
  9. echo '数量大于等于15';
  10. }

4.3switch分支

  1. $num = 15;
  2. switch($num){
  3. case $num<3:
  4. echo '数量少于3';
  5. break;
  6. case $num>=3&&$num<5:
  7. echo '数量大于等于3且小于5';
  8. break;
  9. case $num>=5&&$num<10:
  10. echo '数量大于等于5且小于10';
  11. break;
  12. default:
  13. echo '数量大于等于10';
  14. }

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:完成的很不错, markdown中的多级标题, 下次注意
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post