PHP

标识符/关键字/数据类型

标识符:其实标识符就是变量的名称,函数与类的名称也是标识符。PHP中标识符的规则:
1.标识符可以是任意长度的字母、数字、下划线,且不得以数字开头。
2.PHP中标识符是区分大小写的,但函数名是个例外。
3.变量名可以与函数名相同。但应尽量避免。
4.不能创建与已有函数同名的函数。
 
值得注意的是PHP不要求在使用前就一定要声明标识符;
 
PHP有很多内置的标识符,例如:$_REQUEST,$SERVER等等, 这些标识符都和和JS中的方法例如(alert(),indexOf...)一样会实现一些功能,做一些事情,这些东西我们可以把它理解为一个工具,比如菜刀、螺丝刀,指甲刀,都是用来做某些事情的。

关键字:

共有85个关键字,这些关键字都会实现一些功能; 类似于js中的typeof,这里我们可以看到很多熟悉的身影; 例如 case break continue ..这些针对循环的关键字;
 
and  or  xor  __FILE__ extends  __LINE__  array()  as  break  case  class  const  continue  declare  default  die()  do  echo  else  elseif  empty()  enddeclare  endfor  endforeach  endif  endswitch  endwhile  eval()  exit()  extends  for  foreach  function  global  if  include  include_once  isset()  list()  new  print  require  require_once  return  static  switch  unset()  use  var  while  __FUNCTION__  __CLASS__  __METHOD__
 
final(PHP 5)  php_user_filter(PHP 5)  interface(PHP 5)  implements(PHP 5)  exception(PHP 5)  public(PHP 5)  private(PHP 5)  protected(PHP 5)  abstract(PHP 5)  clone(PHP 5)  try(PHP 5)  catch(PHP 5)  throw(PHP 5) this(PHP 5 only)

输出方法echo和print

    echo的速度快于print ,echo没有返回值,而print有返回值,且返回值总为1。
<?php
echo 'hello word<br>';
print 'hello word';
?>
输出结果为:hello world
hello world die() >> 输出一条消息,并退出当前脚本。//相当于 return的结束当前函数的功能

函数

其实PHP最经典,也是最核心的地方就是函数,PHP提供了超过一千种內建函数,参考手册点击前往;

作用域:
1.局部变量;
函数中的参数也是局部变量;
<?php
$x=5; // 全局变量
function myTest(){
$y=10; // 局部变量
echo "<p>测试函数内变量:<p>”;
echo "变量 x 为: $x”;
echo "<br>”;
echo "变量 y 为: $y”;
}
myTest();
echo "<p>测试函数外变量:<p>”;
echo "变量 x 为: $x”;
echo "<br>”;
echo "变量 y 为: $y”;
?>
2.全局变量:
<?php
$x=5;
$y=10;
function myTest(){
global $x,$y; //利用这个关键字声明的变量是全局变量;
$y=$x+$y;
}
myTest();
echo $y; // 输出 15
?> 3.Static 作用域(JS中的闭包);
局部变量在运行结束之后会被删除,再次重新声明时会被重新赋值,但是static类变量不会,他会一直存在于php的变量中;
<?php
function fnName(){
static $x = 11;
echo $x;
$x++;
}
fnName();
fnName();
?>

数组

1.什么是数组?
用来储存多个数据的数据类型; 2.创建数组:
$arr = array(1,2,3,4,5); 3.使用数组:
$arr[0] //
$arr[1] // 手动数组赋值:
$arr[0] = 11; 数组相关方法:
获取数组长度:count()函数;
count($arr);//返回数组长度; 这样我们就可以写for循环了,数组中的内容我们就可以遍历出来了; for($x = 0 ; $x < count($arr) ; $x++){
echo $arr[$x];
} php关联数组:(用=>链接起来) $testArray = array('name' => 'liyang','age' => 18 );
echo 'liyang age is '.$testArray['age']; 数组排序:
sort() :升序排列; rsort() :降序排列; 遍历关联数组:foreach(); foreach()第一个参数为数组>> foreach($arr); foreach()第二个参数为关键字as代表在数组中找到的值赋给后面的变量 >> foreach($arr as); foreach()第三个和第四个参数为key和value ;也就是关联数组中的键和值 用 => 链接 >> froeach($arr as $key => value); $arr = array('firstName' => 'yang', 'lastName' => 'huaizhi’);
foreach ($arr as $key => $value) {
echo $key.'<br>';
echo $value.'<br>';
} foreach() 会执行两次,因为数组中有两对数据,如果数组中的数据有n个那么foreach就执行n次; 键值一一对应,根据颜色来查看;

对象

1.类与对象;
<?php
class show{
var $hello = "hello”;
function showMe(){
echo $this->hello . " world";
}
}
$me = new show();
$me -> showMe();
?> PHP中 用class 命名一个对象, 这个对象里面可以有属性和方法, 属性的命名方式为 var $变量名 = 变量值; 在类中使用这个变量的时候使用 $this 指向当前类。 $this -> 变量名(直接写变量名); 实例化类的时候,用new关键字; 调用内部方法的时候 使用 ->

返回JSON格式数据

    json_encode()方法进行json格式的转码;
接收一个关联数组,返回值就是json格式的数据
作用:就是将关联数组转换成json格式的数据

数据库

     数据库是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以我们使用关系型数据库管理系统,来存储和管理大量的数据。
 
     所谓关系型数据库,是建立在关系模型基础上的数据库,借助与集合代数等数学概念和方法来处理数据库中的数据。
     其特点为:
     1.数据以表格形式出现;
     2.每行为各种记录的名称;
     3.每列为记录名称所对应的数据域;
     4.许多行和列组成一张表单;
     5.若干的表单组成database
 
 
     数据库:数据库是一些关联表的集合;
 
     数据表:表是数据的矩阵,在一个数据库中的表看起来像是一个简单的电子表格;
 
     列:一列数据元素,包含了相同的数据;字段
 
     行:一行记录,是一组相关的数据;记录
 
     主键:是唯一的,一个数据表只能包含一个主键,可以用主键查询数据;
 
     MySQL是一个开源的关系型数据库管理系统。目前属于Oracle公司。
 
 
数据库中的数据类型
     整型:
类型 存储范围 字节
TINYINT
有符号值:-128到127(-2^7到2^7-1)
无符号值:0到255(0到2^8-1)
1
SMALLINT
有符号值:-32768到32767(-2^15到2^15-1)
无符号值:0到 65 535(0到2^16-1)
2
MEDIUMINT
有符号值:-8388608到8388607(-2^23到2^23-1)
无符号值:0到 16 777 215(0到2^24-1)
3
INT
有符号值:-2147483648到2147483647(-2^31到2^31-1)
无符号值:0到 4 294 967 295(0到2^32-1)
4
BIGINT
有符号值:-922337203685477808到922337203685477807(-2^63到2^63-1)
无符号值:0到 18 446 744 073 709 551 615(0到2^64-1)
8
 
 
浮点型
类型 存储范围 字节
FLOAT(4,1)
有符号:(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)
无符号:0到(1.175 494 351 E-38,3.402 823 466 E+38)
4
DOUBLE
有符号: (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
无符号: 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
8
 
日期时间型:
类型
大小
(字节)
范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4
1970-01-01 00:00:00/2038
结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07
YYYYMMDD HHMMSS 混合日期和时间值,时间戳
 
 
字符型:
类型 大小 用途
CHAR 0-255字节 定长字符串
VARCHAR 0-65535 字节 变长字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65 535字节 二进制形式的长文本数据
TEXT 0-65 535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据
 
 

在PHP中使用MySQL

     连接数据库管理系统函数:
$link = new mysqli(host,username,password,dbname);
参数释义:
host,mysql的主机名或ip地址
usernane,mysql用户名
pasword,mysql密码
dbname,要操作的数据库名
返回值:
当连接成功时返回连接标识符
当连接失败时返回false
连接失败:
echo $link->connect_error; 设置字符集:
$link->set_charset("utf8"); 查询语句(执行一条sql语句):
$link->query(sql命令); 插入数据:
$query1 = "insert tb_name (字段名) values(对应值)";
$link->query($query1); 更新数据:
$query2 = "update tb_name set 字段名=值 where 条件";
$link->query($query2); 删除记录:
$query3 = "delete from tb_name where 条件"
$link->query($query3); 查询记录:
$query4 = "select * from tb_name";
$res = $link->query($query4); 索引数组+关联数组查看数据:$res->fetch_array()
索引数组查看数据:$res->fetch_row();
关联数组查看数据:$res->fetch_assoc(); √
对象方式查看数据:$res->fetch_object();
以上四种方式每次执行返回一条记录的数据,可配合循环多次执行,查询所有数据 断开数据库的函数:
$link->close();
断开连接
程序执行完毕自动断开,可省略不用

     插入记录(创建字段下的数据):
          INSERT tb_name (col_name,...) VALUES(val,...);
     查找记录:
          SELECT col_name,... FROM tb_name;
     更新记录UPDATE:
          UPDATE tb_name SET age = age + 5, sex = 2 WHERE username='TOM’;
     删除记录DELETE:
          DELETE FROM tb_name WHERE id=2;
 
     排序:SELECT * FROM stu ORDER BY 笔试 LIMIT 0,8
 
 
 
 

PHP的简单了解的更多相关文章

  1. 【造轮子】打造一个简单的万能Excel读写工具

    大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...

  2. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  3. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  4. 哪种缓存效果高?开源一个简单的缓存组件j2cache

    背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...

  5. 在Openfire上弄一个简单的推送系统

    推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...

  6. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  7. 使用 Nodejs 搭建简单的Web服务器

    使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块. ...

  8. ASP.NET Aries 入门开发教程2:配置出一个简单的列表页面

    前言: 朋友们都期待我稳定地工作,但创业公司若要躺下,也非意念可控. 若人生注定了风雨飘摇,那就雨中前行了. 最机开始看聊新的工作机会,欢迎推荐,创业公司也可! 同时,趁着自由时间,抓紧把这系列教程给 ...

  9. 简单入门canvas - 通过刮奖效果来学习

    一 .前言 一直在做PC端的前端开发,从互联网到行业软件.最近发现移动端已经成为前端必备技能了,真是不能停止学习.HTML5新增的一些东西,canvas是用的比较多也比较复杂的一个,简单的入门了一下, ...

  10. 简单粗暴地理解js原型链--js面向对象编程

    原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好. 不要纠结于那一堆术语了,那除了让你脑筋拧成麻花,真的不能帮你什么.简单粗暴点看原型链吧, ...

随机推荐

  1. 基于网络拓扑图通过RCMS对网络进行配置

    目录 基于网络拓扑图通过RCMS对网络进行配置 一些基本命令 对网络拓扑图1的简单配置 二层交换机S3 三层交换机 S2 实验结果 对网络拓扑图2的简单配置 NAT.ACL配置公网IP 基于网络拓扑图 ...

  2. NVDLA软件架构和源码解析 第一章—内核驱动【华为云技术分享】

    驱动整体设计介绍 不同的processor Nvidia DLA的内核驱动KMD(Kernel mode driver)中,并不是把DLA当成一个设备来控制,而是把不同的功能模块当做不同的proces ...

  3. 100道MySQL常见面试题总结

    原文链接:https://juejin.im/post/5d351303f265da1bd30596f9 前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐 ...

  4. 卸载webpack,降低版本

    卸载:npm uninstall webpack -g 重新安装:npm install webpack@3.7.1 -g

  5. 【LeetCode】680. Valid Palindrome II

    Difficulty:easy  More:[目录]LeetCode Java实现 Description https://leetcode.com/problems/valid-palindrome ...

  6. MethodInvoker委托,跨线程访问

    Invoke(new MethodInvoker(delegate { textBox1.Enabled = true; })); 上面是简单缩写,也可以写成 private void btnOK_C ...

  7. layout_gravity 属性和 gravity属性的区别

    安卓中  LinearLayout有两个非常相似的属性: android:gravity与android:layout_gravity. 区别在于: android:gravity 属性是对该view ...

  8. Django model distinct 的使用方法

    原文: 今天突然有人问起在 django 的 model 里面怎么用 distinct, 对于这种东西,我一向的观点是查看django 的在线文档.于是不加思索的根据在线文档给出了答案,但结果很让人沮 ...

  9. 2019 中手游java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.中手游等公司offer,岗位是Java后端开发,因为发展原因最终选择去了中手游,入职一年时间了,也成为了面试官 ...

  10. drf之组件(认证、权限、排序、过滤、分页等)和xadmin、coreapi

    认证Authentication 可以在配置文件中配置全局默认的认证方案 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_fr ...