博客列表 >0107作业-常量创建与访问、单双引号的区别、数组的常用操作和分支控制的基本形式-php培训十期线上班

0107作业-常量创建与访问、单双引号的区别、数组的常用操作和分支控制的基本形式-php培训十期线上班

Dseven
Dseven原创
2020年01月08日 19:14:08653浏览

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. }

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议