PHP基础(常量、双引号、数组、分支控制)
一、常量的创建与访问常量是一种特殊的变量, 仅允许初始化一次, 不允许更新, 可以理解为只读变量
常量没有作用域限制, 在编程的时候非常有用, 经常用来表示状态, 或数据共享
常量不是变量, 不需要”$”, 但是常量名仍然要遵守PHP标识符的命名规范
1、使用define()函数创建常量语法:
define('APP_NAME','多用户商城');
//参数说明:两个参数,第一个参数表示常量名;第二个参数表示常量值。
代码解析效果:
2、使用const指令创建常量语法:
constAPP_PATH='app/admin/index/.php';
代码解析效果:
3、常量的访问使用echo当成普通变量显示
4、两种创建方法的不同之处define不可以创建类常量,const可以创建类常量
classA
{
//const可以创建类常量
constNATION='CHINA';
//define不可以创建类常量
//会报错
//define('USER_NAME', 'admin');
}
echo A::NATION,'
';
define可以使用表达式, 而const中能用字面量
实例代码:
$domain='php.cn';
//define可以使用表达式,
define('MY_EMAIL','admin@'.$domain);
echo MY_EMAIL,'
';
constNEW_EMAIL='admin@'.domain;
//报错
代码解析效果:
二、双引号对变量和特殊字符的处理方式单引号: 内部的值,按字面量的形式进行处理
双引号: 内部的值, 将被解析,如果值是变量名或者特殊字符,会被解析出来
实例//单引号中的内容会原样输出,不解析内部的变量和特殊字符
echo'$name\t的值是\t$name
';
//双引号中的特殊字符会被解析
echo"$name\t的值是\t$name
";
//不希望第一个变量被解析,可以能过在变量前添加转义字符“\”
echo"\$name\t的值是\t$name
";
//在单引号或双引号中引用自身,也是通过转义字符
echo'$name\t的值是\t\'$name\'
';
echo"\$name\t的值是\t\"$name\"
";
//在字符串中输出转义字符
echo"\\$name",'
';
//双引号中的变量标识符如果与其它字符串连接在一起会引起解析错误
echo"\$name\t的值是$namehello
";
//处理办法
echo"\$name\t的值是{$name}hello
";
三、索引数组和关联数组的常用操作
1、创建数组(两种)逐个添加: 将每一个元素,通过赋值的方式, 直接添加/追加到数组中
字面量: 将多个数组元素放在一对中括号[]中, 多个元素之间用逗号分隔开
创建索引数组1、通过赋值的方式, 直接添加/追加到数组中
//赋值,把'user1[0]看成变量名'
$user1[0]=10;
$user1[1]='admin';
$user1[2]='admin@php.cn';
//查看全部元素
//不行,输出类型
echo $user1.'
';
//查看类型
echo gettype($user1).'
';
//加'true'参数,返回成字符串
$str=print_r($user1,true).'
';
echo gettype($user1).'
';
//
标签格式化
echo'
'.print_r($user1,true).''.'
';
键名是连续整数 可省略
追加数据
//键名连续,整数可省略
$user2[]=10;
$user2[]='admin';
$user2[]='admin@php.cn';
//追加
$user2[]='php中文网';
echo'
'.print_r($user2,true).'';
字面量: 将多个数组元素放在一对中括号[]中, 多个元素之间用逗号分隔开
$user1[0]=10;
$user1[1]='admin';
$user1[2]='admin@php.cn';
$user2[]=10;
$user2[]='admin';
$user2[]='admin@php.cn';
//追加
$user2[]='php中文网';
//通过字面量一次添加多个元素
$user3=[20,'*jack','jack@php.cn'];
echo'
'.print_r($user3,true).'';
//如果想获取到变量或数组的更多 信息,可以 使用var_dump()——可以同时输出多个
var_dump($user1,$user2,$user3);
访问索引数组访问索引数组的某个元素,当成变量echo输出
$user2[]=10;
$user2[]='admin';
$user2[]='admin@php.cn';
//访问索引数组的某个元素,当成变量echo输出
echo $user2[2],'
';
遍历索引数组:foreach
遍历过程:相当于把数组元素的值,临时赋值给变量$value,然后echo输出
$user2[]=10;
$user2[]='admin';
$user2[]='admin@php.cn';
$user2[]='php中文网';
//遍历索引数组:foreach
foreach($user2as$value){
echo $value,'
';
}
数组元素与变量之间的转换——mvc模板赋值用到list 语法结构:
list不是函数,是语言结构,与echo类似
函数绝对不允许放在等号左边接受赋值
$user3=[20,'jack','jack@php.cn'];
list($id,$name,$email)=$user3;
echo"id=>$id, name=>$name, email=>$email
";
将索引数组转为字符串——数组存储到数据库用到imimplod()函数
$user3=[20,'jack','jack@php.cn'];
$str=implode(',',$user3);
//第一个参数:分隔;
echo gettype($str),' : ',$str,'
';
//sql语句
$sql="INSERT 'users' SET 'comment' = ${str}";
将一个字符串,再转换成索引数组explode() 函数
//将一个字符串,再转换成索引数组
$str='html=css=js=php=laravel';
$arr=explode(',',$str);
//第一个参数:分隔;
echo'
'.print_r($arr,true).'';
——————————————————————————————————————————————
创建关联数组关联数组:键名采用主义化的字符串,访问时不再依赖于元素在数组中的位置
通过赋值的方式创建关联数组
//通过赋值的方式, 直接添加/追加到数组中
$products1['id']=100;
$products1['name']='手机';
$products1['price']=5000;
echo'
'.print_r($products1,true).'';
字面量 + foreach()遍历
$products2=['id'=>105,'name'=>'电脑','price'=>9000];
//也用foreach()遍历
foreach($products2as$value){
echo $value,'
';
}
//输出键名+键值
foreach($products2as$key=>$value){
echo"['$key'] => $value
";
}
关联数组与变量之间的转换extract()函数
$products2=['id'=>105,'name'=>'电脑','price'=>9000];
//关联数组与变量之间的转换
extract($products2);
//没有创建'$id,$name,$price'也能调用
echo"id=>$id, name=>$name, price=>$price
";
将一些独立的变量,组装成一个关联数组compact()函数
参数对应变量名
$dsn='mysql:host=localhost;dbname=php';
$username='root';
$password='root';
$linkParams=compact('dsn','username','password');
//compact参数对应变量名
echo'
'.print_r($linkParams,true).'';
剩余参数$dsn='mysql:host=localhost;dbname=php';
$username='root';
$password='root';
functionconnect(...$linkParams)
{
// 返回的是索引数组
print_r($linkParams);
}
connect($dsn,$username,$password);
将关联数组转索引数组array_values() 函数
$products2=['id'=>105,'name'=>'电脑','price'=>9000];
$indexArr=array_values($products2);
echo'
'.print_r($products2,true).'';
echo'
'.print_r($indexArr,true).'';
多维数组数组元素, 除了可以是原始类型, 也可以还是一个数组, 这时就形成也多维数组
从数据表中的读取的记录, php会转为二维数组, 日常开发, 二维数组用得最多
$users=[
['id'=>101,'name'=>'小王','grade'=>88],
['id'=>102,'name'=>'小张','grade'=>78],
['id'=>103,'name'=>'小李','grade'=>68],
];
// 访问一个
echo $users[1]['name'],'
';
//遍历
foreach($usersas$user){
// print_r($user);echo '
';
//'{}'包装
echo"id=>${user['id']}, name=>${user['name']}, price=>${user['grade']}
";
}
——————
四、分支控制的所有形式的基本实现
if: 单分支语法格式:
if (expr)
statement
expr:条件; statement: 执行语句
//实例:如果$a大于$b, 则输出:“a大于b”
$a=15;
$b=13;
if($a>$b)
echo"a大于b";
if - else: 双分支if(expr)
statement1
else
statement2
/*
* 如果表达式expr为真,执行statement1
* 如果表达式expr为假,执行statement2
* */实例
// 单价
$price=50;
// 金额
$total=0;
// 折扣率
$discount=1;
//数量
$count=16;
//$count = 3;
if($count>=10&&$count<20){
$discount=0.9;
}else{
$discount=1;
}
$total=$count*$price*$discount;
echo"购买数量: $count, 总金额: $total, 折扣率: $discount
";
if - elseif - else: 多分支// 3. 多分支
$count=5;
$count=15;
$count=25;
$count=35;
if($count>=10&&$count<20){
$discount=0.9;
}elseif($count>=20&&$count<30){
$discount=0.8;
}elseif($count>=30){
$discount=0.7;
}else{
$discount=1;
}
$total=$count*$price*$discount;
echo"购买数量: $count, 总金额: $total, 折扣率: $discount
";
switch - case - break: 多分支简化方案// 单价
$price=50;
// 金额
$total=0;
// 折扣率
$discount=1;
// 4. switch(), 简化多分支
$count=8;
switch(true){
case$count>=10&&$count<20:
$discount=0.9;
break;
case$count>=20&&$count<30:
$discount=0.8;
break;
case$count>=30:
$discount=0.7;
break;
default:
$discount=1;
}
$total=$count*$price*$discount;
echo"购买数量: $count, 总金额: $total, 折扣率: $discount
";
年底比较忙; 掉队了,只能争取利用过年时间来赶了,用周未时间先补上一天的的作业了。
php以前自学过一段时间,也可能是因为才刚开始,感觉还不难。