php1技术论坛,PHP 基础知识-1

这篇博客详细介绍了PHP的基础知识,包括语法规范、变量、常量、数据类型、流程控制、函数、数组操作和字符串处理。内容涵盖变量定义、预定义变量、数据类型转换、函数的赋值与引用传值、作用域以及常用的字符串函数如strlen、trim等。此外,还讨论了文件引入、错误处理以及数组相关函数的使用,为PHP初学者提供了全面的学习指南。
摘要由CSDN通过智能技术生成

面试的时候发现自己有时候连最基础的知识都不能准确的回答,甚是可悲,万丈高楼平地起!

1-语法规范

行位单位、所以每行要用分号结束

变量严格区分大小写,函数名、方法名、类名不区分大小写

2-标签4种

xml风格<?php ?>

script风格

短格式 echo 'php'; ?>

sap格式

3-注释

双引号

单引号

注意:双引号不能与单引号错位

4-变量

1-变量的定义

变量就是内存中用于临时存储数据的一个内存空间,每一个空间都有一个名子,这个名子就是变量名,变量名的作用是用于引用,通过变量名对变更的操作就是对内存的对应的空间都读写。

语法:$变量名=值;

变量名必须是字符数字下划线开头

必须以 $ 开头

变量名严格区分大小写

2.-可变变量

A变量值是另一个变量的名,就可以在A变量名前加两个$读取另一个变量的值。

$a = 'b';

$b = 'c';

$$a = 'c';

3-预定义变量 (9种、$_、$GLOBALS)

$_GET 用于接收从前台以get方式传递过来的数据

$_POST 用于接收从前台以post方式传递过来的数据

$_REQUEST 包含get与post方式传递的数据

$_SERVER 记录了客户端与服务器端的相关信息

$_COOKIE 主要用于记录php会话技术中的保存在客户端的数据

$_SESSION 主要用于记录php会话技术中的保存在服务器端的数据7.

$GLOBALS 主要用于记录全局变量

$_FILES 主要保存用户上传的文件的信息

$_ENV 主要用于保存php的环境变量

6-变量的删除

unset(变量名);内存中没有

变量名 = null;(变量的值是null,还存在于变量中)

7-常量

常量就是一类特殊的变量,常量也是存储数据的,但是常量一旦定义就不允许更改值,常量本身也不能删除。

常量的定义

define('常量名',值);

const 常量名 = 值;

区别:

const可以定义类的内部和外部

define只能定义类的内部

define的第三个参数区别大小写 true

const的值读取:constant()

8-魔术常量(6种、__开头)

__FILE__ 当前脚本文件的完整路径名

__LINE__ 当前行号

__DIR__ 当前文件的所在的目录

__FUNCTION__ 获取当前所在的函数名

__METHOD__ 获取当前所在的方法名。形式 类名::方法名

__CLASS___ 获取当前所在的类名

9-数据类型

==三大类型:(4+2+2)==

标量数据类型(int、float、string、bool)

复合数据类型 (array、object)

特殊数据类型(resource、null)

一. 标量数据类型

int

float

string

使用单引号定义的字符串能被转义的字符有\’转义成` \\转义成\

单引号中的变量不能被解释为变量的值

使用双引号定义的字符串能被转义的字符有\” \ \$ \t \n

双引号中的变量能被解释为变量的值

双引号中的变量有时需使用”{}”括起来,来限定变量

php中的转义符()\' 单引号

\" 双引号

\t tab表(制表符)

\n 换行

\r 回车

\\ \

\$ $

定界符 heredoc 、nowdoc

//heredoc

$a = 100;

$str =<<

sadsad,$a,sad

abc;

echo $str;

//nowdoc

$a =100;

$str = <<

这里可以是任合内容

我是历的苛夺基$a

本原则叶落归根在运

输费艰难田¥¥&……

AAA;

echo $str;

Boolean

10-复合数据类型

数组

==索引数组== 下标是整数

==关联数组== 下标是字符

object

对象

11-特殊数据类型

resource

null

12-数据类型的转换

其他数据类型转为整型

0db360edb1bbc3f4da4b112e29327b95.png

其他数据类型转为字符串

9b1e2a4ccb006ee0c474c32a8fa19cde.png

其他数据类型转为布尔型

0d930011e2b91165036c4341f66e4391.png

所有0、“”、“0”、null、array()转布尔都为false

13-变量与常量的内存理解

1、内存分区

栈区 cpu

堆区 存储复合类型的值

数据段 简单的值,细分全局区(全局变量、局部变量)和静态区(常量、类常量、静态变量)

代码区 (存代码)

14-执行过程

编译

执行

输出

15-函数判断

is_int() 判断是否为整型

is_bool() 判断是否为布尔类型

is_array() 判断是否为数组

is_null(); 判断是否为null

is_object() 判断是否为对象

is_string() 判断是否为字符串

is_scalar(); 判断是否为标量数据类型

empty();

判断一个变量是否为“空”,只要是能够转换为布尔false都是所谓的“空”,返回布尔true。0、0.0、””、’0’、false、null、空数组

isset();

null的时候是false

主要用于判断是否设置值,如果是null值才返回false

is_null();

只有是null才为true

主要用于判断一个变量的值是否为null

16-PHP的输出语句

echo

print

print_r()

var_dump()

sprint_f()

十四、运算符

值得注意的是,很多人搞不清楚前自增和后自增的区别,

前自增

​ 运行规则:先对变量的值进行加1,再使用变量的值进行运算

后自增

​ 运行规则:先使用变量的值进行运算,再对变量的值进行加1

提示:

​ 无论前自增还是后自增,变量的值都会加1,唯独受影响的是整个式的结果

算术运算符

前自增

后自增

前自减

后自减

字符串运算符

.

.=

比较运算符

>、=、<=、!=、==、===、!==

提示:

布尔false

等效false的值(0、0.0、””、’0’、null、空数组)

如果要严格区分等效于false的其他数据类型值与真的布尔值false,那么请求===

逻辑运算符

&&、||、!、and、or

逻辑与短路:有一个为true返回true

逻辑或短路:有一个为false返回false

and、or 与 &&、||区别:

and、or的运算优先级低于=

&&、||的运算优先级高于=

位运算符

十五、流程控制

一、 分支结构

//单分支

if(exp){

//your code

}

//双分支

if(exp){

//your code

}else{

//default code

}

//多分支

if(expA){

//codeA

}else if(expB){

//codeB

}else if(expC){

//codeC

}else{

//default code

}

switch分支

语法:

switch(变量){

case 值1:

//语句体1

break;

case 值2:

//语句体2

break;

default:

//缺省语句体

}

php中switch的比较属于==比较,js中switch的比较属于===

二、 循环控制

for循环

for($i=0;$i<10;$i++){

}

foreach循环

语法1:

foreach(数组 as $v){

//循环体

}

语法2:

foreach(数组 as $k=>$v){

//循环体

}

while循环

while(exp){

//循环体

}

do…while循环

do{

//循环体

}while(exp)

一、数组 count($arr)

元素

下标

个数

二、数组的相关操作

定义:array()、[]

追加

删除 usnet();

三、数组的遍历

下标连续的

for($i = 0 ;$i

}

下标不连续

foreach(数组 as $k => $v){

//循环体

}

三、数组的分类

索引数组-下标是整数

关联数组-下标是字符串

混合数组

四、关联数组的遍历

==怎么把关联二维数组转换成一维数组==

public function test1(){

$user = array(

'id'=>1,

'name'=>'zhangsan',

'age'=>19

);

$arr = '';

foreach ($user as $key=>$value ){

$arr .= $value;

}

dump($arr);die;

}

public function test2(){

$arr = [];

$arr[] = 'zhsangsan';

$arr[] = '19';

$arr[] = '1';

dump($arr);die;

}

五、函数

函数的定义

function funName(形参列表){

//函数体

【return 值】;

}

形参

形参主要用于接收从函数外部传递进来的数据

形参只对内部可见

形参可以具有默认值,如果在调用时没有为具有默认值的形参传递数据,那么在函数内部使用的形参的默认值,否则使用传递进来的数据。

具有默认值的形参一般位于形参列表的最后。

形参的作用是让函数更性有通用性

实参

用于向函数内部传递值

匿名函数

$showInfo =function(){

}

六、静态变量

==在函数内部使用static定义的变量就是静态变量==

静态变量的特性

静态变量只会被初始化一次

静态变量的值不会随着函数的调用而销毁,仍然在内存,但是不能在函数外部访问。

静态变量在其后函数调用时还可以访问,并且保留上一次函数运行时的结果

==项目中积分的使用问题==

七、传值方式

赋值传真

将变量A的值传递到变量B

引用传值

将变量A的内存地址传递到变量B

&地址符

用于将赋值传值更改为引用传值。

函数的实参地址的传递

函数的实参与形参的传值是赋值传值

如果想实现函数实参与形参的引用传值,形参前面加&

八、作用域

外部作用域

在任何函数外部定义的变量就是全局变量,其作用域就是全局作用域

内部作用域

在函数内部定义的变量就是局部变量,其作用域就是局部作用域

全局作用域

global关键字

函数内部访问函数外部的变量

不受作用域限制

常量、

预定义的变量:

$_GET

$_POST

$_REQUEST

$_SERVER

$_SESSION

$_COOKIE

$_ENV

$_FILES

$GLOBALS

一、PHP文件引入

require

在引入的文件发生错误(不存在),会直接结束当前循环的执行。

inlcude

在引入的文件发生错误(不存在),会继续其后的代码执行。

require_once\include_once

在引入文件时会先检查被引入的文件之前是否有引入过,如果没有则引入,有就不引入

说明:一般引入的代码有逻辑性的,使用require,include一般用来引入HTML

二、针对调用的函数引入问题

同一个脚本内可以先调用函数后定义函数

原理:先编译,编译后代码区就有了函数的定义代码,后再调用,正常

先调用,后引入,报错(原因是引入的文件是先引入后调用,执行调用时文件还没有定义,所以会报错)

三、PHP常用字符串

==strlen== 字符串的长度

$string = 'http://www.doc.com/index.php/Home/Test/strlen';

echo (strlen($string));

==strchr== 查找search字符串首次出现的位置并截取到最后

strchr($string,'w')

==strrchr== 查找search字符串末次出现的位置并截取到最后

strchr($string,'i')

==strpos== 在str字符串中查询search字符串首次出现的位置(0开始算起)

echo (strpos($string,'w'));

==strrpos== 在str字符串中查询search字符串最后一次出现的位置

echo (strpos($string,'w'));

stripos、strripos i表示不区分大小写的查询

==trim==

①:trim(str【,substr】) 用于在str字符串两端去除指定的substr字符,如果省略substr,则是去除空格

$string = " zhangsan ";

echo(trim($string));

$string1 = '22zhangsan22';

echo '
';

echo (trim($string1,'22'));

②:ltrim(str【,substr】) 去除左侧指定的字符或空格

$string2 = '22zhangsan';

echo (ltrim($string2,22));

③:rtrim(str【,substr】) 去除右侧指定的字符或空格

$string2 = 'zhangsan22';

echo (rtrim($string2,22));

==str_repeat(str,n)==

$string2 = 'nice';

echo (str_repeat($string2,3));

==ucfirst、ucwords== 首写单词大写,一句话首单词大写

$string2 = 'nice';

echo (ucfirst($string2));

$string2 = 'nice aweqwe dqwe';

echo (ucwords($string2));

==strtolower、strtoupper== 转换大小写

==explode(sep,str)== 将字符串str,使用sep分隔符进行分割,并以数组的形式返回

$str = "people became quite illogical when they decide";

var_dump(explode(' ',$str));

==md5( )== 加密,返回32位字符串

==addslashes()==

对于些特殊字符添加反斜杠(\),特殊字符(‘)(“)(\)

==stripslashes( )==

addslashes的逆运算,去除反斜杠

==htmlspecialchars== 将html语言中的标签转换成对应的字符实体。

==htmlspecialchars_decode== 逆运算

==chr、ord==

ord主要用于获取字符的unicode编码 97

chr主要用于获取指定编码对应的字符 b

四、数学函数

max() 获取多个变量或数组中的最大值

min() 获取多个变量或数组中的最小值

abs() 获取绝对值

ceil() 向上取整

floor() 向下取整

rand(m,n) 获取m与n之间的随机整数

mt_rand(m,n); 推荐,获取m与n之间的随机整数

round(v【,p】); 对变量v保留p位小数(四舍五入),如果省略p表示直接取整

pow(m,n); 取m的n次方

sqrt(v); 开平方

五、数组函数

count() 数组长度

array_keys($arr); 以数组形式返回key值

array_values($arr); 以数组形式返回value值

in_array($value); 判断数组$arr中存是否有$value值存在

array_key_exists($key,$arr); 判断数组$arr中存是否有$key键名存在

数组添加与删除

array_pop(); 从尾部删除一个元素

array_push(); 向数组的尾部追加一个元素

array_shift(); 从头部删除一个元素

array_unshift(); 向数组的部部追加一个元素

array_splice(); 从数组的中间删除指定个数的元素,并以新的元素代替

list结构

list(变量列表)= 数组

将数组中的元素的值,依次赋值给list后的变量,要求数组是一个索引数组

数组排序

sort(arr); 对数组进行升序排序

rsort($arr); 对数组进行降序排序

数组合并

array_merge(arrA, arrA, arrA,….);

数组指针相关的函数

each(); 用于获取当前数组指针所指向的元素,并返回一个混合数组,==并将指针下移==。

key(); 用于获取当前数组指针所指向元素键名

current(); 用于获取当前数组指针所指向元素的键值

next(); 将指针下移

prev(); 将指针上移

end(); 将指针指向最后一个元素

reset(); 重置指针(回到第一个元素)

$arr =[

'id'=>2,

'brand' => 'apple',

'price'=> 16

];

//用于获取当前数组指针所指向的元素,并返回一个混合数组,并将指针下移。

var_dump(each($arr));

var_dump(key($arr)) ;

var_dump(current($arr)) ;

var_dump(next($arr)) ;

var_dump(prev($arr)) ;

var_dump(end($arr)) ;

var_dump(reset($arr)) ;

输出结果

array(4) {

[1]=>

int(2)

["value"]=>

int(2)

[0]=>

string(2) "id"

["key"]=>

string(2) "id"

}

string(5) "brand"

string(5) "apple"

int(16)

string(5) "apple"

int(16)

int(2)

示例2:使用each遍历数组

$arr =[

'id'=>2,

'brand' => 'apple',

'price'=> 16

];

while($data = each($arr)){

echo $data['value'],'
';

}

本作品采用《CC 协议》,转载必须注明作者和本文链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值