吾爱乐享
个人学习网站

php学习之php操作MySQL的库操作

吾爱乐享阅读(1646)

1,添加数据库

数据库名 操作
Php07 修改 删除

1.1创建数据库

  • 创建一个ceate_database.php文件,用来显示获取到的数据库
  •  创建一个create_database.html文件用来创建数据库并提交数据表单
  • 创建一个database.php文件,用来接收提交过来的数据并处理

2.查询数据库

在create_database.php文件中,写入获取数据库资源代码,并把对应的变量写入到表格中

3.删除数据库

3.1通过超链接发送数据库名称到处理页面,修改create_database.php对应的删除的超连接

3.2创建一个drop_database.php文件,接收数据并删除数据库

4.修改数据库

4.1在create_database.php文件中修改,用超链接传递数据库名到更新页面

4.2修改跟新数据库的页面,也就是选择字符集和校对集页面。创建alter_database.php文件

4.3创建获取修改表单页面,并处理。创建alterdb.php文件

 

 

 

 

php学习之php操作MySQL

吾爱乐享阅读(1758)

1.开启php操作mysql的函数库

找到php.ini,打开搜索mysql,找到extension=php_mysql.dll、extension=php_mysqli.dll、extension=php_pdo_mysql.dll找到这三个去掉前面的分号,

2.查看是否开启mysql函数库的功能

创建一个php文件,在这个文件中写入phpinfo();,查看当前文件是否有mysql

3.php操作mysql的流程

  1. 连接数据库
  2. 选择数据库并设置编码
  3. 准备sql语句
  4. 发布sql语句到mysql服务器
  5. 接收返回的结果集资源
  6. 解析结果集资源
  7. 关闭链接资源

4.具体的操作流程

1.连接数据库:mysql_connect(‘服务器地址’,’用户名’,’密码’);

2.选择数据库并设置编码

选择数据库:mysql_select_db(‘数据库名’);

bool mysql_select_db(string $database_name [,resource $link_identifier])

成功返回true,失败返回false

设置通信编码:mysql_query(‘set names urf8’);

3.准备sql语句

发送的语句分三大类:库操作、表操作、数据操作

4.发布sql语句到mysql服务器

发布sql语句函数:mysql_query(sql语句);

说明:resource mysql(string $query [, resource $link_identifier=null])

mysql_query()向指定的link_identifier关联的服务器中的当前活动数据库发送一条查询(不支持多条查询)

返回值:

mysql_query()仅对select、show、describe、explain和其他语句返回一个resource,如果查询出现错误则返回false

对于其他类型的sql语句,比如:insert、update、drop之类,mysql_query()在执行成功时返回true,出错时翻译false

5.接受返回的结果级资源

6.解析结果集资源

  • mysql_fetch_array:从结果汇总取得一行作为关联数组或者数字数组或二者皆有
  • mysql_fetch_assoc:从结果集中取得一行作为关联数组
  • mysql_fetch_rows:取得结果集中的行的数目

说明:array mysql_fetch_assoc(resource $result)

返回对应结果集的关联数组,并继续移动内部数据指针。mysql_fetch_assoc()和mysql_fetch_array()加上第二个可选参数mysql_assoc完全相同。它仅仅返回关联数组

当执行一条语句时只会打印一条语句,然后指针向后移动一次,在执行一条语句则打印出来的是第二条语句依次类推,(类似与循环中的$i++,自动加一)所以要打印出所有的数据,就要用循环语句

  • while语句:在不知道结果中有多少条数据时可用
  • for语句:必须知道结果中的数据的长度也就是个数

所以适合用while语句循环打印数据库中的数据

7.关闭连接资源

mysql_close:关闭mysql连接

说明 :在php5.5后被移除,应使用mysqli或者pdo_mysql扩展来替换

bool mysql_close([resource $link_identifier=null])

php学习之mysql数据的增删改查

吾爱乐享阅读(1882)

1.插入数据

语句:insert into 表名 [(字段1,字段2,字段3,….)] values (值1,值2,值3,…);

  • 单行插入数据
    • 省略字段名,这种写法后面的值必须要完整,有多少字段就要插入多少个数据,且字段名和值必须一一对应
    • 可以选择性的插入数据,需要给哪个或哪些字段插入就写那个字段名,且字段和值必须一一对应
  • 一次性插入多行数据

注意:插入数据是自动增长的时,

  1. 插入的值写默认(default)或者空,对应的字段会根据已有的最大值开始递增
  2. 插入的值小于之前值,默认会排在前面,如果已存在该值,会报错(前提是该字段设置为主键)

2.删除数据

语句:delete from 表名 where 条件 [order][limit限定];

where条件必须添加,否则会删除所有的数据,建议选择主键删除也就是id,因为主键值不重复,有针对性的删除

删除大范围的数据

  • order:当前表倒序还是正序,不用添加,默认是正序,
  • limit:限定范围,不用则不添加

选择单条记录删除

限定范围,正序删除limit的条数

限定范围 先用oerder by排序 然后限定范围删除,此时不加where条件,否则会报错

普通删除后保留删除的id号,不再让数据占用

truncate 语句:truncate[table]表名; 用于直接删除整个表结构并重新创建该表,注意如果有其他数据,一并都会被删除,慎用

3.修改数据

语句:update 表名 set 字段名1=值1,字段名2=值2,….where条件;

4.查询数据

查询数据只有两种结果:要么‘真’有数据,要么‘假’没有数据

语句:select 字段列表[from子句] 表名 [where子句] [group by子句] [having子句] [order by子句] [ limit子句];

  • 基础查询—-查询所有的数据及字段            语句:select * from表名;
  • 基础查询—-查询某些字段              语句:select 字段2,字段2,字段3 ….from 表名;
  • 基础查询—-别名          语句:select 字段1 as 别名1,字段2 as 别名2…. from 表名;

限定条件查询

  • form子句:表示从哪个或哪些表中取得数据
  • where子句:给条件的查询
    • 算术运算符:+  –  *  /
    • 比较运算符:<    >    <=     >=     =      !=
    • 逻辑运算符:与(and)或(or)非(not):含义和用法和其他编程语言一样(建议在这里使用单词,不要使用符号)
    • in 单独查询某些数据   字段名 in(值1,值2,值3….)
    • between:字段名 between 小值 and 大值(表示该字段的值在给定的连个值之间,含该两值)
    • like:模糊查询
      • 字段名 like ‘要查询的字符’;  如果是直接写字符,匹配查询字符必须一至也就是精准查询
      • 字段名 like ‘%要查询的字符%’;  %是匹配任何字符

算术运算符查询:

比较运算符

逻辑运算符

in 条件查询 在什么什么中 between在两者之间 like模糊查询

group by 子句:分组

注意:分组只能是分组后的数量而不能是分组后的信息

语句:select 字段或聚合函数 from 表名 group by 分组字段

常见的聚合函数:取平均值avg()、取个数count()、取总和sum()、取最大值max()、取最小值min()

having:条件,功能和where一样

order by 排序

分正序(asc)和倒序(desc)

语句:select * from 表名 order by 字段名 desc或asc;

limit:分页查询

语句:

limit 0,3;

limit 3,3;

limit 6,3;

limit 9,3;

说明:

第一个数是开始数据的下标

第二个数是每次显示的数量

重点:查询的语句各个子句的先后顺序

select 字段名 from 表名 where子句(算术、逻辑、比较、in、between、like) group by子句 having order by 字段条件 asc或desc limit;

数据增删改查

php学习之mysql数据表的增删改查

吾爱乐享阅读(2083)

1.创建表

语句:create table 表名(

字段名称1 字段类型 字段选项,

字段名称2 字段类型 字段选项,

….

)表选项;

  • 表选项:表字符集和数据引擎
    • 字符集:charset=utf8;
    • 数据引擎:默认innodb,语法:engine=引擎。如engine=innodb;

什么是存储引擎?

存储引擎也叫表类型,是指一个表中的数据以何种方式存放在文件或内存中,不同的存储引擎提供不同的性能特性和可用功能,没有一种各方面都是既具有最佳性能有具有各种功能的存储引擎。我们要做的时根据数据的具体使用情形开选择合适的存储引擎,有的要求读取速度快、有的一起哦写入速度快、有 的要具有高安全可靠性、有的要海量存储等等,常用的存储引擎是innodb(默认)和myisam

  • 字段:当前表中的数据的数据名称,自定义的,但是使用单词,见名知意
  • 字段类型:当前字段中存储的数据类型,必须一开始就指定好
  • 字段选项:设置当前字段的一些选项—是否为空、是否为主键、是否为唯一键、是否加备注等
    • null、not null:是否可以为空
    • default:是否有默认值
    • auto_increment:是否可以自动增长,必须是数字。如:需要给每条数据一个编号,原因是数据内容可以重复、编号不能重复。
    • primary key:设置主键,数据内容不能重复,在查询数据主查询条件,一个表中一个主键一般都是id
    • unique[key]:设定唯一键,即表中所有行的数据在该字段中的值能不能有重复
    • comment:设置备注,给当前字段设置说明

  • 字段类型:字符串、日期时间、数值
    • 数值型:存储的数值大小不一样,默认有符号的,无符号:unsigned
      • 整数:tinyint、smallint、int、bigint,

当输入的数字大于数据类型的范围,默认会自动截取取值的最大值

  • 小数:float、decimal

float:范围大约是-3.4e+38到-1.1e-38、0和1.1e-38到3.4e+38

  • decimal:定点型

decimal(10,2):长度为10位,其中小说2位

  • 字符串:
    • char:最大255    varchar:65532     text:无限制
    • varchar:和char的区别:前面是变长型,后面的时定长型
    • char:定长型,固定的长度,如char(20),最大存储为20的长度,如果没有写如20 长度的数据,其他位置用空格自动补齐
    • varchar:变长型,可以变化长度,如varchar(20),最大存储20的长度,如果没有写的长度,写入多少算多少
  • 日期时间:
    • date类型:支持的范围为1000-01-01到9999-12-31
    • datetime类型:支持的范围为1000-01-01 00:00:00到9999-12-31 23:59:59

当日期和时间格式不是按照规定输入时插入的数据为0

2.删除表

语句:drop table 表名;

3.查看表

查看所有表:show tables;

查看表结构:desc 表名;

  • field:字段名称
  • type:字段类型
  • null:是否为空
  • key:索引
  • default:默认值
  • extra:其他

查看创建表语句:show create table 表名;

4.修改表

修改表名:alter table 旧表名 rename[to] 新表名;

添加新字段:alter table 表名 add 新字段 字段类型 字段选项;

修改表字段(包含字段名):

alter table 表名 change 旧字段名 新字段名 新字段类型 新字段选项;

修改字段类型和选项

alter table 表名 modify 字段名 新字段类型 新字段选项;

删除字段:alter table 表名 drop 字段名;

数据库的设计原则:

数据库设计三范式(3nf):

  • 第一范式(1nf):原子性,数据不可再分,一个表中的数据(字段值)不可再分。
  • 第二范式(2nf): 唯一性,消除部分依赖,一个表中的每一行必须唯一可区分,且非主键字段值完全依赖主键字段值,也可以说,必须消除在一个表中的非主键字段值仅仅依赖于部分主键的值情形,显然这个要求只能对有联合主键的表才有可能违反情况,对单字段主键的表是不会出现的
  • 第三范式(3nf):独立性,消除传递依赖,使一个表中的任何一个非主键,完全独立地依赖于主键。而不能又依赖于另外的非主键,如果一个表中的非主键字段b依赖于另一个非主键字段a 因为啊作为非主键字段,自然是依赖于主键字段(范式2所决定),则此时会出现传递依赖:主键->a-> b。第三范式就是要消除这种依赖,通常的实际做法中,我我们只要注意到一个表存储一种数据就可以符合第三范式

php学习之mysql基础知识及数据库的增删改查

吾爱乐享阅读(1897)

1,数据库的介绍

  • 数据库:存储数据的永久空间,就是通过一种特殊的方式存储到硬盘中
    • 一般存储永久空间的时硬盘
    • 存储的临时空间就是内存
  • 关系型数据库和非关系型数据库
    • 关系型数据库是所有的数据基本上都是有关系的,通过一个数据和其他的一个数据进行有效的关联
    • 常见的关系型数据库有:
      • SQL Server
      • ORACLE
      • Informix
      • SYBASE
      • MySQL:mysql是oracle旗下的免费的关系型数据库,存储量相对少一些,不过一般足够用,除非特别大的公司
  • 数据库-数据库管理系统(DBMS)-mysql
  • mysql查看数据方式为:结构化查询语句(sql语句)
  • mysql的基本结构是:C/S框架    开发方式分为:C/S 和B/S

2.mysql的基本语法

  • 注释:
    • 单行注释:#注释的内容
    • 单行注释:– 注释的内容(–后面要加空格)
    • 多行注释:/*注释的内容*/
  • 语句行:一条语句也称为一条命令,通常用分号(;)结束,也可以通过delimiter新结束符命令设定新的结束符。语句的执行时以一条语句为单位进行的一次执行一条语句
  • 大小写:mysql语句不区分大小写,show databases;也可以写成SHOW DATABASES
    • mysql中的各种系统关键字和命令本身是不区分大小写
    • mysql中自定义的名称(标识符)的大小写,有的区分有的不区分,跟操作系统有关系,windows是不区分的。linux是区分的
    • 命名(标识符)规则:
      • 可以自己命名名字,称为标识符,包括:数据库名、表名、字段名、视图名、函数名、过程名、变量名、用户名等
      • 可以命名标识符的字符比较多,建义使用字母数字和下划线,并不用数字开头。和php一样
      • 非常字符或系统关键词虽然可以作为标识符,但是最好要包在反引号中(esc键下面的那个键)不推荐使用
      • 对数据库名、表名、视图名,在window系统中不区分大小写,而其他系统中区分。建议使用小写,并采用下划线分割法
      • 对其他自己命名的标识符(字段名、函数名、过程名)。不区分大小写,但建议使用小写,弄采用下划线分割法

3.库操作

库:存储数据的仓库–起名称

表:存储数据的表,一个库可以创建多个表—起名称

字段:给表中的数据起名称

记录:具体一条数据

3.1创建数据库

语句:create database 数据库名 库选项;

库选项:字符集、校对集

创建数据库的三种不同方式,任何一种都可以

3.2查询所有数据库

语句:show databases;

3.3查询数据库创建语句

语句:show create database 数据库名;

3.4修改数据库

说明:不能修改数据库名称。只能修改字符集和校对集。

语句:alter database 数据库名 charset=新字符集 collate=新的校对集。

注意:字符集和校对集是可以分开修改的,但是不建议分开,容易出错

  • 查看校对集:show collation;
  • 查看字符集:show charset;

3.5删除数据库

语句: drop database数据库名;

3.6选择数据库

语句:use 数据库名;

数据库操作语句

php学习之函数和数组的案例

吾爱乐享阅读(2671)

函数:

1.(函数,逻辑)定义一个函数,该函数用于判断所给的年份数是否是一个闰年——函数带一个参数作为年份数,返回结果是一个布尔值。

说明:闰年就是能被4整除且不能被100整除的年,或者能被400整除的年。

<?php
//定义一个函数,该函数用于判断所给的年份数是否是一个闰年——函数带一个参数作为年份数,返回结果是一个布尔值。
function year ($y){
if($y%4==0&&$y%100!=0||$y%400==0){
return ‘是闰年’;
}else{
return ‘不是闰年’;
}
}
$y =year(2001);
echo $y;
?>

2.计算器

计算器案例《php学习之函数的创建以及案例

数组:

  1. 定义一个数组,有5个数,请找出最大的数和最小的数和对应的数组下标(key)是多少?
    //定义一个数组,有5个数,请找出最大的数和最小的数和对应的数组下标(key)是多少?
    
    $arr=array(11,22,33,44,55);
    
    //echo count($arr);
    
    $min=$arr[0];
    
    $max=$arr[0];
    
    $min_index=0;
    
    $max_index=0;
    
    for($i=0;$i<=count($arr)-1;$i++){
    
    //判断最小
    
    if($min>$arr[$i]){
    
    $min=$arr[$i];
    
    $min_index=$i;
    
    }
    
    //判断最大
    
    if($max<$arr[$i]){
    
    $max=$arr[$i];
    
    $max_index=$i;
    
    }
    
    }
    
    echo $min.'最小,对应的下标'.$min_index.'<br>';
    
    echo $max.'最小,对应的下标'.$max_index;
  2. (数组)定义一个数组,并给出6个整数,代表本小组同学的各自年龄,求本小组同学的平均年龄。
    //定义一个数组,并给出6个整数,代表本小组同学的各自年龄,求本小组同学的平均年龄。
    
    $age = array(23,24,25,26,27,28);
    
    //定义sum1=0
    
    $sum1=0;
    
    for($i=0;$i<=count($age)-1;$i++){
    
    $sum1+=$age[$i];
    
    }
    
    //echo $sum1;
    
    echo $sum1/count($age);
    
    echo "<hr>";
    
    //用系统函数
    
    $sum=array_sum($age);
    
    $p=$sum/count($age);
    
    echo $p;
  3. (数组)定义一个数组,并给出8个整数,求该数组中大于平均值的数的个数,和小于平均值的数的个数。
    /定义一个数组,并给出8个整数,求该数组中大于平均值的数的个数,和小于平均值的数的个数。
    
    $g = array(11,22,33,44,55,66,77,88);
    
    $sum2=0;
    
    foreach($g as $k=>$v){
    
    $sum2 += $v;
    
    }
    
    $pin = $sum2/count($g);
    
    //echo $pin;
    
    $num1=0;
    
    $num2=0;
    
    for($i=0;$i<=count($g)-1;$i++){
    
    if($g[$i]<$pin){
    
    $num1++;
    
    }elseif($g[$i]>$pin){
    
    $num2++;
    
    }
    
    }
    
    echo '大于平均值的个数为:'.$num2.',小于平均数的个数为:'.$num1;
  4. (数组)定义一个数组,输入9个任意的整数,求该数组中奇数的平均值。
    //定义一个数组,输入9个任意的整数,求该数组中奇数的平均值。
    
    $j = array(1,2,3,4,5,6,7,8,9);
    
    $jishu=0;
    
    $num3=0;
    
    foreach($j as $v){
    
    if($v%2!=0){
    
    $jishu+=$v;
    
    $num3++;
    
    }
    
    }
    
    //echo $jishu;
    
    $jiping=$jishu/$num3;
    
    echo $jiping;
  5. 二维数组的遍历-结果放入到html中。

案例见《php学习之数组的创建以及案例

php学习之函数的创建以及案例

吾爱乐享阅读(1880)

1.函数的介绍

说明:把一段有 某个功能的这些代码进行封装,在需要使用的地方进行调用

语法:

function 函数名([形式参数列表]){

有具体功能的代码块:函数体;

[return 返回值];

}

  • 函数名:函数分为自定义函数和系统函数,自定义函数的函数名目的就是给当前功能起一个可以调用的名称,自己定义的,系统函数的函数名是系统集成的,直接调用,如:count(); var_dump();等
  • 形式参数:有时候需要有时候不需要根据情况而定,在调用时传递过来的一些数据,这些数据可以在函数内使用,每个参数就是一个变量,每个参数用逗号隔开。如:$name,$age,$sex….
  • return:有时候需要有时候不需要根据情况而定,把功能结果返回给调用的地方

2.函数的调用

说明:直接使用函数名就可以调用当前函数名的函数

语法:函数名(实际参数列表);         —在需要使用的地方调用函数

实际参数:就是把某些数据传递给函数的实际数据。如userinfo($name,$age,$sex);

案例:

<?php
//创建函数获取用户信息
function userinfo($name,$age,$sex){
return $name.$age.$sex;
}
//调用函数
$userinfo = userinfo(‘张三’,23,’男’);
var_dump($userinfo);
?>

实战:计算器

不用函数前

<?php

//计算器

//定义变量初始值

$num1 = 1;

$num2 = 2;

$fh = '+';

//判断运算符

switch($fh){

case '+':

$res=$num1+$num2;

break;

case '-':

$res=$num1-$num2;

break;

case '*':

$res=$num1*$num2;

break;

case '/':

$res=$num1/$num2;

break;

}

echo $res;

?>

改进:用函数封装后
//计算器
//定义变量初始值
$num1 = 1;
$num2 = 2;
$fh = '+';
//函数封装

function jisuanqi($num1,$num2,$fh){

//判断运算符

switch($fh){

case '+':

$res=$num1+$num2;

break;

case '-':

$res=$num1-$num2;

break;

case '*':

$res=$num1*$num2;

break;

case '/':

$res=$num1/$num2;

break;

}

return $res;

}


//调用函数

$r=jisuanqi($num1,$num2,$fh);//3

echo $r;

$r=jisuanqi(2,4,'*');//8

echo $r;

继续改进:用户可以输入参数进行计算

1.创建表单jisuan.html

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8" />

<title>计算</title>


</head>

<body>

<form action = ""> 

数值:<input type = "text" name = "num1">

<select name = "fh">

<option value = "+">+</option>

<option value = "-">-</option>

<option value = "*">*</option>

<option value = "/">/</option>

</select>

数值:<input type = "text" name = "num2">

<input type = "submit" value = "计算">

结果:<input type = "text" value = "<?php echo $res;?>">

</form>

</body>

</html>
2.创建封装计算器的功能函数,jisuanqi.php
<?php

//计算器功能模块

//函数封装

function jisuanqi($num1,$num2,$fh){

$res=0;

//判断运算符

switch($fh){

case '+':

$res=$num1+$num2;

break;

case '-':

$res=$num1-$num2;

break;

case '*':

$res=$num1*$num2;

break;

case '/':

$res=$num1/$num2;

break;

}

return $res;

}

?>
3.把两个页面引入到get_info.php
<?php
//引入功能函数
include('./jisuanqi.php');

//获取计算信息
$num1 = isset($_GET['num1'])?$_GET['num1']:'';
$num2 = isset($_GET['num2'])?$_GET['num2']:'';
$fh = isset($_GET['fh'])?$_GET['fh']:'';
//echo $num1,$num2,$fh;
//调用函数
$res = jisuanqi($num1,$num2,$fh);
//echo $res;
//引用表单,把结果赋值到表单结果的value中
include('./jisuan.html');
?>

结果图:

php学习之数组的创建以及案例

吾爱乐享阅读(2021)

1.数组的介绍

说明:就是一组数据的集合,这个集合由键值对组成,每个键值对用‘,’隔开

目的:需要存储大量的数据而且这些大量的数据集合需要在一个变量中存储。

<?php

$name=’张三’;

$age=23;

$sex=’男’;

echo “姓名:{$name},年龄:{$age},性别:{$sex}”;

?>

2.数组的创建

方式一:

变量=array(键值对1,键值对2,键值对3,……);

如:$arr = array(‘name’=>’张三’,’age’=>23,’sex’=>’男’);

键值对:由键名和键值组成

键名:给某个值起的名称,通过这个名称就可以找到数据的关键词,键名可以是字符串,必须加引号,可以是数字,不加引号

键值:就是数组对应的键名中的数据,这个数据可以是那8种数据类型(int、float、string、数组、对象、资源、布尔、null)

方式二:

变量=array(元素1,元素2,元素3,…..);

这种方式没有创建键名,系统默认添加键名

键名也称下标,这里隐藏的下标是从0开始依次递增。如:0123456….

方式三:

变量[‘键名’]=键值;

变量[]=键值;

说明:[]中是写下标的地方,这里面可以写下标也可以不写,写了就是自己的下标,没写默认是数字

创建常见的问题:

  • 最后一个键值对的后面不能加逗号,否则会报错
  • 默认下标是数字:从0开始,如果在这个增长的路上自己加了一个键名(下标)
    1. 如果是字符串,当前元素就是字符串下标,跳过这个字符串下标,继续数字向后排
    2. 如果是后面的下标和前面的一样,后面下标会覆盖前面的
    3. 如果是定义一个没有的数字值,后从当前定义的最大的值开始递增

  • 数组的分类

  1. 关联数组:下标都是字符串的这个数组称为关联数组

  1. 索引数组:下标都是数值的这个数组称为索引数组

  1. 混合数组:既有字符串也有数字的这个数组称为混合数组

数组的使用

  1. 打印所有的元素:var_dump();
  2. 打印单个元素:echo $arr[‘name’];

遍历数组

  1. for循环遍历数组—只能索引数组且下标必须递增的
  2. //for循环遍历,用for遍历只能是索引数组
  3. $arr5=array(‘张三’,23,’男’);
  4. $arrlengh=count($arr5);
  5. for($i=0;$i<=$arrlengh-1;$i++){
  6. echo $arr5[$i].'<br>’;
  7. }

foreach循环遍历数组

语法:foreach(变量 as 键名=>键值){

键名就是当次循环到的一个键值的下标

键值就是当次循环到的一个键值对的值

}

//foreach()遍历数组遍历数组

$arr4=array(‘张三’,23,’男’,’aihao’=>’玩’,’学习’,’php’,’吾爱乐享’,3=>’女’

,20=>’没得选’,’你猜’,’写不了’,50=>’跳过去’);

foreach($arr4 as $k=>$v){

echo $k.$v.'<br>’;

}

多维数组

说明:一个数组中的元素还是一个数组这个时候就是多维数组

如:多维中的二维数组

$arr= array(

0=>array(元素,元素,…),

1=>array(元素,元素,….),

……………

);

遍历二维:多维数组想要最终的值,必须循环出来

把二维数据中的值放到表格

一维数组变二维数组

php学习之流程控制之循环

吾爱乐享阅读(2177)

流程控制之循环

For循环

说明:循环就是自动执行某段代码、循环执行

语法:for(变量初始化;条件表达式’变量变化){

循环体;

}

  • 变量初始化:循环的开始,给一个循环的变量,如$i=1;
  • 条件表达式:必须给循环一个可以退出的条件,否则就是死循环。如$i<=10;
  • 变量变化:让初始化的值发生改变,一直到达到条件为止。$i<=10;

流程控制图:

案例:1

输出1-100

<?php

for($i=1; $i<=100;$i++){

echo $i.'<br>’;//打印结果1-100并且换行

}

?>

案例:2

输出99乘法表

//分析:首先九九乘法表是由九行九列组成,先打印九行

For($i=1;$i<10;$i++){echo $i;}这是打印九行

根据外循环控制行数,内循环控制列数,那么打印九列就是在九for循环中再套一层for循环即for($i=1;$i<=9;$i++){

For($j=1;$j<=9;$j++){

Echo “$i x $j =”.$i*$j.’ &nbsp;’;

}

echo “<br>”;

}打印出来的是一个9行9列的矩形,但是我们的乘法表是一个递减的三角形,行数不变列数逐渐递减,内部循环控制列数,也就是$j控制的表达式不是一直是9,我们可以看出第一行的时候只有一列,第二行的时候只有两列,直到第9行的时候有9列,从而可以分析出,行数和列数的增加的基数是一样的,就可以判定$j的取值范围就是$j<=$i

即:

for($i=1;$i<=9;$i++){

For($j=1;$j<=$i;$j++){

Echo “$i x $j =”.$i*$j.’ &nbsp;’;

}

echo “<br>”;

}

看出$i和$j位置反了,换一下位置即可

把Echo “$i x $j =”.$i*$j.’ &nbsp;’;

换成Echo “$jx $i =”.$i*$j.’ &nbsp;’;

<?php

for($i=1;$i<=9;$i++){

For($j=1;$j<=$i;$j++){

Echo “$j x $i =”.$i*$j.’ &nbsp;’;

}

echo “<br>”;

}

?>

案例2:打印金字塔

//打印金字塔

for($i=1; $i<=6; $i++){

for($a=6; $a>$i; $a–){

echo “&nbsp;”;

}

for($j=1; $j<=$i; $j++){

 

echo ‘*&nbsp;’;

}

echo ‘<br>’;

}

案例3打印空心菱形

echo ‘<hr>’;
//打印空心菱形
for($i=1; $i<=6; $i++){
for($a=1; $a<=6-$i; $a++){
echo “&nbsp;”;
}
for($j=1; $j<=$i*2-1; $j++){
if($i==1){
echo ‘*’;
}elseif($j==1||$j==$i*2-1){
echo ‘*’;
}else{
echo ‘&nbsp;’;
}
}
echo ‘<br>’;
}
for($i=5; $i>=1; $i–){
for($a=1; $a<=6-$i; $a++){
echo “&nbsp;”;
}
for($j=1; $j<=$i*2-1; $j++){
if($i==1){
echo ‘*’;
}elseif($j==1 || $j==$i*2-1){
echo ‘*’;
}else{
echo “&nbsp;”;
}
}
echo ‘<br>’;
}

实战案例1

一张纸的厚度是0.01毫米,则该纸对折30次后是多厚(据说超过珠穆朗玛峰的高度)。反过来,一张纸对折几次后,就超过1米厚了?

$p=0.01/1000;//把毫米换成米

for($i=1; $i<=30; $i++){

$p=$p*2;

echo "对折{$i}次后的厚度为{$p}<br>";

//判断当厚度超过1m后的次数

if($p>=1&&$p<2){

echo '<hr>';

echo '对折第'.$i.'次后的厚度超过1m';

echo '<hr>';

}

}

 

实战案例2

写一个程序输出1到100这些数字。但是遇到数字为3的倍数的时候,输出“三”替代数字,为5的倍数用“五”代替,既是3的倍数又是5的倍数则输出“三五”。

for($i=1;$i<=100;$i++){

if($i%3==0&&$i%5==0){

echo '三五';

}elseif($i%3==0){

echo '三';

}elseif($i%5==0){

echo'五';

}else{

echo $i;

}

echo '<br>';

}

while循环

语法:变量的初始值;

while(条件表达式){

循环体;

变量的变化;

循环1-100

<?php

$i=1;

while($i<=100){

echo $i;

$i++;

}

?>
案例2:99乘法表
<?php

$i=1;

while($i<=9){

$j=1;

while($j<=$i){

echo"$j x $i = ".$j*$i;

$j++;

}

echo '<br>';

$i++;

}

?>
实战案例1

假设某人有100,000现金。每经过一次路口需要进行一次交费。交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000。请写一程序计算此人可以经过多少次这个路口。

$m=100000;

$k=1;

while($m>=5000){

if($m>50000){

$m=$m*0.95;

}elseif($m<=50000){

$m=$m-5000;

}

echo '剩余'.$m.'经过'.$k.'<br>';

$k++;

}

php学习之php的常用的几个预定义变量的使用

吾爱乐享阅读(1558)

1.预定义变量

说明:php系统已经定义好变量,我们直接使用

  • 超全局变量是在全部作用
  • $GLOBALS
  • $_SERVER
  • $_GET
  • $_POST
  • $_FILES
  • $_REQUEST
  • $_SESSION
  • $_ENV
  • $_COOKIE
  • $php_errormsg
  • $HTTP_RAW_POST_DATA
  • $http_response_header
  • $argc
  • $argv

2.超全局变量:当前页面变量是有作用域的限制

php中许多预定义变量都是超全局的,这意味着他们在一个脚本的全部作用域中都可以使用

超全局变量有:

  • $GLOBALS
  • $_SERVER
  • $_GET
  • $_POST
  • $_FILES
  • $_COOKIE
  • $_SESSION
  • $_REQUEST
  • $_ENV

全局作用域:在函数外部定义的变量,就称为全局变量,全局变量不能在函数内部使用

局部作用域:在函数内部定义的变量,就称为局部变量,局部变量不能在函数外部使用

超全局作用域:没有使用限制,并且有的超全局还可以跨脚本($_POST、$_GET、$SESSION、$_COOKIE等)

$_GET

说明:就是接收表单或者超链接发送过来的数据

语法:$_GET[‘参数名称’];

案例:

新建一个login.html

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8" />

<title>网页标题</title>

</head>

<body>

<form action='./get_user_name.php' method='get'>

用户名:<input type="text" name="username">

密  码:<input type="password" name="password">

<input type="submit" value="提交">

</form>

</body>

</html>

新建一个get_user_name.php

<?php

//给用户名和密码一个初始值(以后在数据库储存的)

$user='admin';

$pass='123456';

//获取用户名和密码

$userName=$_GET['username'];

$passWord=$_GET['password'];

//判断合法性--是否为空

if($userName==''||$passWord==''){

echo'用户名或密码不能为空';

exit;

}

//判断输入的用户名和密码是否正确

if($userName==$user&&$passWord==$pass){

echo '登陆成功!';

}else{

if($userName!=$user){

echo'用户名错误';

}else{

echo'密码错误';

}

}

?>

get的另一种方式:超链接

直接在提交的超链接中加上?和参数值。如:get_user_name.php?username=admin&password=123456

$_POST

说明:接收表单用post方式传递数据的功能

$_SESSION

get和post可以接收数据,可以对数据进行判断,但是不能储存数据

session是告诉浏览器我的数据已经验证过了,登陆成功,session需要存储数据,其他页面通过判断session中的存储数据来判断是否真的登陆,session可以跨页面来使用数据

用户提交数据的表单

接收用户提交的数据

其他页面进行session验证,判断session里面有没有值

<?php
//开启session
session_start();
if(@$_SESSION['username']==''){
echo '请登陆';
exit;
}else{
echo 'session验证成功,用户名为'.$_SESSION['username'];
}

?>

推荐免费资源共享,个人经验总结学习

联系我们联系我们