PHP学习笔记1

这篇具有很好参考价值的文章主要介绍了PHP学习笔记1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

//语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出。


/* 【命名规则】 */
常量名 类常量建议全大写,单词间用下划线分隔    // MIN_WIDTH
变量名建议用下划线方式分隔            // $var_name
函数名建议用驼峰命名法                // varName
定界符建议全大写                 // <<<DING, <<<'DING'
文件名建议全小写和下划线、数字        // func_name.php
私有属性名、方法名建议加下划线        // private $_name _func
接口名建议加I_                    // interface I_Name

/* 语言结构 */
array(), echo(), empty(), eval(), exit(), isset(), list(), print(), unset()
echo, print 可省略括号。

/* 预定义常量 */
PATH_SEPARATOR  //路径分隔符(Windows为分号,类Unix为冒号)
DIRECTORY_SEPARATOR //目录分隔符
PHP_EOL //当前系统的换行符
PHP_VERSION //PHP版本号
PHP_OS  //PHP服务操作系统
PHP_SAPI    //用来判断是使用命令行还是浏览器执行的,如果 PHP_SAPI=='cli' 表示是在命令行下执行
PHP_INT_MAX                    INT最大值,32位平台时值为2147483647
PHP_INT_SIZE                   INT字长,32位平台时值为4(4字节)
M_PI    //圆周率值
M_E     //自然数

//PHP运行环境检测函数
php_sapi_name() //返回一个PHP与WEB服务器接口类型的小写字符串
该函数返回值与常量PHP_SAPI一致!
接口类型:SAPI(the Server API, SAPI)
可能值:aolserver、apache、apache2filter、apache2handler、caudium、cgi、cgi-fcgi、cli、 continuity、embed、isapi、litespeed milter、nsapi、phttpd、pi3web、roxen、thttpd、tux、webjames


/* 大小写问题 */
- 类名、方法名、属性名、函数名:不区分大小写
- 变量名、常量名、元素下标:区分大小写

/* 可变标识符 */
可变变量  $i = 3; $k = 'i'; echo $$k; //输出3
可变函数  function func() {echo 'hello!';} $i = 'func'; $i(); //输出hello
可变下标  $i = '1234'; $k = 3; echo $i[$k];   //输出4
可变类名  class CLS{public $k = 'hello';} $i = 'CLS'; $j = new $i; echo $j->k;
可变属性  class CLS{public $k = 'hello';} $i = 'k'; $j = new CLS; echo $j->$i;
可变方法  class CLS{public function k(){echo 'hello';}} $i='k'; $j=new CLS; $j->$i();

/* 可变变量 */
* 用于业务逻辑判断得到某些具体信息
    $var_name = "class_name";
    $$var_name = "PHP0913";        // $class_name = "PHP0913";$class_name已存入内存中
    var_dump($class_name);        // var_dump($$var_name);

/* 变量函数 */
get_defined_vars    //返回由所有已定义变量所组成的数组(包括环境变量、服务器变量和用户定义的变量)


/* unset() */
* unset()仅删除当前变量名和引用,其值并未被删除
* 引用传递中,删除一个变量及其引用,其他变量及引用均存在,且值依然存在

     echo "<br />";
    $v3 = '值';
    $v4 = &$v3;
    unset($v4);
    var_dump($v3, $v4);

/* 变量的最长有效期 */
* 当前脚本的执行周期,脚本执行结束,变量即消失


/* 预定义变量/超全局变量 */
$GLOBALS
$_COOKIE
$_ENV
$_FILES
$_GET
$_POST
$_REQUEST
$_SERVER
$_SESSION


/* 常量定义 */
define(常量名, 常量值, [区分大小写参数])        //true表示不区分/false表示区分大小写
const 常量名 = 常量值    // 新,建议
常量名可以使用特殊字符
constant($name)        // 获取常量名
                    // 例:echo constant('-_-');


/* 常量相关函数 */
defined
get_defined_constants


/* 预定义常量 */
__FILE__            所在文件的绝对路径
__LINE__            文件中的当前行号
__DIR__            文件所在目录
__FUNCTION__        函数名称
__CLASS__            类的名称
__METHOD__        类的方法名
__NAMESPACE__        当前命名空间的名称


/* 整型 */
整型占用4字节,共4*8=32位,最大值为2147483647,最小值为-2147483648,最小值的绝对值比最大值的大1
最高为表示正负,1表示负,0表示正


/* 进制转换函数 */
只能十进制与其他进制进行转换,只有六种
转换时,参数应是字符串(即不可含八进制的“0”或十六进制的“0x”)
    dec
     bin
     oct
    hex
hexdec()    十六进制转十进制        也可写hex2dec()
dechex()    十进制转十六进制        也可写dec2hex()
bindec()    二进制转十进制        也可写bin2dec()
decbin()    十进制转二进制        也可写dex2bin()
octdec()    八进制转十进制        也可写oct2dec()
decoct()    十进制转八进制        也可写dec2oct()


/* 浮点数 */
浮点数不能比较大小 !!!
几乎所有小数,在保存时都是近似值而不是精确值!
最大值:+/- 1.8E308
PHP所能保存的最长小数位:14位

/* 单引号字符串 */
单引号字符串中,只能转义反斜杠和单引号

/* 双引号字符串 */
只解析字符串一次 !!!
eval     把字符串作为PHP代码执行
大括号包裹变量,可确定变量名界限。如:"aaa{$bbb}ccc"
双引号中可以将ASCII码转换为字符
"\x61" -> a    // 字符串中不需0,整型中才是0x前导
"\x49\x54\x43\x41\x53\x54" -> ITCAST
将ASCII转成字符函数chr()
将字符转成ASCII函数ord()
#双引号转义列表
\n 换行
\r 回车
\t 水平制表符
\\ 反斜线
\$ 美元标记
\v 垂直制表符
\e Escape
\f 换页
\" 双引号"
\[0-7]{1,3} 符合该正则表达式序列的是一个以八进制方式来表达的字符  
\x[0-9A-Fa-f]{1,2} 符合该正则表达式序列的是一个以十六进制方式来表达的字符  

/* 定界符 */
herodoc - 功能同双引号,能解析
$str = <<<AAA
字符串内容
AAA;

nowdoc - 功能同单引号,不能解析
只在开始位置有单引号
$str = <<<'AAA'
字符串内容
AAA;


/* 字符串的使用 */
可将字符串当作一个字符的集合来使用,可独立访问每个字符。仅适用于单字节字符(字母、数字、半角标点符号),像中文等不可用
$str = "abcd";
echo $str[3];   // d
echo $str{0};   // a


/* 【类型操作函数】 */
//获取/设置类型
gettype($var) //获取变量的数据类型
settype($var, $type) //设置变量的数据类型

//类型判断
is_int
is_float
is_null
is_string
is_resource
is_array
is_bool
is_object       
is_numeric      检测变量是否为数字或数字字符串

//转换成指定的数据类型
boolval
floatval
intval
strval

//强制转换类型
(int)
(float)
(string)
(bool)
(array)
(object)
(unset) //转换为NULL
(binary) 转换和 b前缀转换  //转换成二进制

var_dump        打印变量的相关信息。
                显示关于一个或多个表达式的结构信息,包括表达式的类型与值。
                数组将递归展开值,通过缩进显示其结构。
var_export($var [,bool $return]) //输出或返回一个变量的字符串表示
    $return:为true,则返回变量执行后的结果
print_r         打印关于变量的易于理解的信息
empty           检查一个变量是否为空
isset           检测变量是否存在

/* 【流程控制】 */
//if语句的替代语法
if (条件判断) :
   语句块;
elseif (条件判断) :
   语句块;
else :
   语句块;
endif;

//流程控制的替代语法
在嵌入HTML时常用
将 { 换成 : , 将 } 换成 endif; 等
endif
endwhile
endfor
endforeach
endswitch


/* 【switch】 */
switch (条件) {
   case 状态值1:
       语句块;
       [break;]
   case 状态值2:
       语句块;
       [break;]
   case 状态值3:
   case 状态值4:
       语句块;
       [break;]
   default:
       语句块;
       [break;]
}
switch是状态分支,特殊的循环
先计算出状态值,再去与判断数作比较
break退出流程


/* 【for循环】 */
for (条件初始化表达式; 条件判断表达式; 条件变化表达式) {
循环体
}

假设循环体被执行了N次,则
条件初始化表达式被执行1次
条件判断表达式被执行N+1次
条件变化表达式被执行N次

注意:
    1. 循环变量在for语句结束后还可以继续使用,值为第一次失败的值
    2. 循环变量在for循环体内可以使用
    3. 任何条件表达式均可省略,但分号不能省略
        a. 条件初始化表达式被省略时,循环变量被赋值为null,在与条件判断时,
            进行类型转换后再比较。也可以在for语句外进行初始化。
        b. 条件判断表达式被省略时,表示循环为真,进入死循环
        c. 条件变化表达式被省略时,可以在循环体内完成
    4. 每个表达式均可由多条语句组成,每条语句之间使用逗号分割
        如果条件判断表达式由多条语句组成,都会执行,但只有最后一条语句才作为判断条件
    5. for只能遍历数值型索引下标数组
        数组长度函数:count()
    6. 应该将可以初始化的语句均放在条件初始化表达式内,这样可以省去很多执行次数


/* 【goto】5.3+ 版本 */
用来跳转到程序中的某一指定位置
该目标位置可以用目标名称 加上冒号来标记。
PHP中的goto有一定限制,只能在同一个文件和作用域中跳转,
    也就是说你无法跳出一个函数或类方法,也无法跳入到另一个函数。
    你也无法跳入到任何循环或者switch结构中。
    常见的用法是用来跳出循环或者switch,可以代替多层的break。 
可以从循环(switch)中跳出来,但不能从外部跳转进去。而函数或类方法,向外向内均不可。
goto a;
echo 'Foo';
a:
echo 'Bar';


/* 【文件加载】 */
require / include / require_once / include_once
文件载入只是载入目标文件内的代码并执行,与载入的文件类型无关

文件载入属于执行阶段,当执行到require等语句时,才载入该文件的代码,
    编译并执行,然后回到require等语句位置继续执行下面的语句
【注意】
    在载入开始时,先退出PHP模式;
    再载入目标文件代码,执行该代码;
    结束时,再进入PHP模式。
require:处理失败,产生 E_COMPILE_ERROR 错误,脚本中止。
include:处理失败,产生 E_WARNING 错误,脚本继续执行。

#不建议使用require_once/include_once


/* 【相对路径】 */
当前浏览器请求的哪个脚本,当前位置就是属于哪个脚本。
./file 和 file 都表示当前目录下的file文件
file情况(嵌套载入文件时):
如果当前目录没找到该文件就在代码文件所在目录中继续找。
如果当前目录找到有该文件,则不会再在代码文件所在目录去找也不会再加载。
__DIR__     脚本文件所在目录
__FILE__    脚本文件路径

include_path    加载文件查找目录
    set_include_path()  设置include_path,可多个,用字符串作参数
    该函数设置的path只针对该当前文件有效
    该设置只针对查找未直接写文件路径方式有效
    设置新的include_path会覆盖原来的

    get_include_path()  获取当前include_path设置项,无参数

    路径分隔符,在Windows下是分号,在Linux下是冒号
    利用预定义常量 PATH_SEPARATOR 来获得当前的分隔符

如果直接写文件名:
    1. include_path所设置的
    2. 当前目录
    3. 代码所在文件的目录
如果文件名前带有路径,则会直接根据路径查找,include_path直接被忽略


/* 【return】 */
return与require结合,可返回文件的内容,return写在被载入的文件内
return可以终止所在脚本的执行,作为普通脚本语句
return可以返回函数的相应值


/* 【终止和延迟脚本执行】 */
die / exit   终止
return是终止所在脚本的执行
die和exit会立即终止脚本执行
die("到此为止");     该函数内的字符串可被输出
sleep()  延迟(单位:秒)
    默认最多可延迟30秒,PHP配置可以修改 max_execution_time
    例:sleep(12);
usleep()    以指定的微秒数延迟执行
time_sleep_until    使脚本睡眠到指定的时间为止


/* 【函数】 */
1. 函数的声明是在编译时,故先定义再调用,定义与调用无先后关系!
2. 文件只是代码的载体,程序均在内存中执行!
3. 如果函数的定义在需要载入的文件内,则需要先载入该文件,否则调用出错!
4. 函数的定义可以出现在其他的代码段中,此时函数不会在编译阶段被执行
    只有被执行到时才会被定义!只有独立定义时才会被编译在内存中!
    如果出现在其他函数体内,也需要外层函数被调用时才被定义并生效!
5. 函数名不区分大小写
6. 不允许重名,包括系统函数
7. 【可变函数】
    函数名可以用其他变量代替
    $func_name = "sayHello";
    $func_name();       //此时调用sayHello()函数
    注意:只有在调用时才能使用变量,定义时不允许!
8. 变量可作为函数名调用函数,数组元素值也可以!
9. 形式参数parameter,实际参数argument
    可以对参数传递 null,表示该形参不想传递值
    形参与实参之间既可值传递,也可引用传递。
    引用传递参数,应该在定义函数时就在形式参数前加上 & 符号,而此时调用函数实参必须为变量
    如何选择使用哪种传递方式?
        a. 是否需要保证原始数据的完整性
        b. 是否需要增加效率
        c. 对大数据引用传递可节省内存
10. 参数默认值
        a. 函数的参数默认值必须是已经确定的值,不能是变量!
            只要在调用之前定义该常量,则可以使用常量作为参数默认值
        b. 函数默认值可以有多个,建议将有默认值的参数放在参数列表的最后面
           这样可以在调用函数时,不赋予后面有默认值的参数值,否则会出错
        c. 默认参数可以是非标量类型,比如数组、null
        d. 任何默认参数必须放在任何非默认参数的右侧
11. 参数数量
    a. 形参数量多于实参数量
        报告警告级别错误,并以NULL代替
    b. 实参多于形参
        不报告错误,依次为形参赋值
    c. 不确定参数数量
        1) 一个形参都不定义,永远都是实参多于形参
        2) 【可变数量参数】
            func_get_args() 获取当前函数被调用时所有实参的值,返回一个所有实参值组成的数组
            func_get_arg()  获取某个实参的值,通过索引值标识,e.g: func_get_arg(0)
            func_num_args() 获取所有实参的数量
12. 【return】返回值
    a. 函数只有一个返回值,可以通过返回一个数组来得到类似的结果,但可以有多条return语句
    b. return语句会立即中止函数的运行,并将控制权交回调用该函数的代码行
    c. 可以返回包括数组和对象的任意类型
    d. 函数的返回也分值传递和引用传递(返回的是一个变量才可)
        1) 默认是值传递方式
        2) 引用传递方式:
            - 定义函数时,函数名前加上& 表示该函数可以返回引用
            - 调用函数时,函数名前加上& 表示取得函数返回的引用
                此时,函数外修改返回值,会修改函数内的该返回变量的值
            - 如果函数需返回引用,则需要返回一个变量才可以
            - 从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符&
                function &returns_reference(){return $someref;}
                $newref =& returns_reference();
        3) 返回引用的作用文章来源地址https://www.toymoban.com/news/detail-807145.html

到了这里,关于PHP学习笔记1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PHP 课后习题解析与笔记——流程控制语句习题

    这篇文章记录一下帮助粉丝朋友解决的 PHP 课后习题,内容很基础,是关于 PHP 流程控制语句的使用练习,题目内容如下图的两题。这里我用 vscode 编译器和 Wampserver 完成这些题目。 php编写函数实现:输入一个整数,判断它能否被 3、5、7 整除,并输出以下信息之一: 能同时被

    2024年02月09日
    浏览(48)
  • php学习

    1.php标记 开始标记?php  和结束标记 ?中间写 PHP 代码 当解析一个文件时,PHP 会寻找起始和结束标记,也就是告诉php 开始和停止解析二者之间的代码。此种解析方式使得PHP 可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被 PHP 解析器忽略 2.php代码

    2024年01月23日
    浏览(23)
  • 二、PHP基础学习[变量]

    部分内容引用自:https://blog.csdn.net/lady_killer9/article/details/108978062 示例: 示例: echo 123; 规矩: 变量以 $ 符号开始,后面跟着变量的名称 变量名必须以字母或者下划线字符开始 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ ) 变量名不能包含空格 变量名是区分大小写

    2024年02月08日
    浏览(33)
  • 12 Php学习:魔术常量

    PHP 向它运行的任何脚本提供了大量的预定义常量。 不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。 有八个魔术常量它们的值随着它们在代码中的位置改变而改变。 ​​__LINE__​:当前行号,

    2024年04月14日
    浏览(40)
  • CTF笔记:PHP函数is_numeric()绕过

    在做CTF过程中遇到的is_numeric()函数,作用是判断输入是不是数字或数字字符串。 思路1:数值-非数值 原题是[极客大挑战 2019]BuyFlag,判断代码如下: 密码是404,但是不能输入数字,所以要考虑绕过的问题,这里记录解题思路。 上网搜了一下,可以借助url编码中的空字符,例

    2024年02月08日
    浏览(38)
  • 开始学习PHP之开篇入门版

    php在线编辑工具:菜鸟教程在线编辑器 (runoob.com) php集成环境:phpStudy V8.1下载(Win64位) - 官方最新版本(不断更新)-php中文网工具下载 基本的 PHP 语法 PHP 文件的默认文件扩展名是 \\\".php\\\"。 PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码 PHP有两种在浏览器输出文本的基础指令

    2024年02月07日
    浏览(28)
  • CTF之PHP基础学习篇(一)

    估摸着不少学计算机的同学以及其他专业的小部分同学都对于信息安全感兴趣吧!那对于参加这相关的比赛就应该更有兴趣了。那么我们首先就了解一下下这相关的比赛—— CTF(Capture The Flag) CTF 是一种流行的信息安全竞赛形式,其英文名可直译为“夺得Flag”,也可意译为

    2023年04月08日
    浏览(39)
  • 基于PHP的在线课程学习网

    基于PHP的在线课程学习网 目录 前言 系统架构 开发技术 需求分析 数据库设计 系统实现 效果图 系统总结 计算机毕业设计案例 随着在线教育的兴起,越来越多的学生和教育机构倾向于通过网络平台进行学习。为了满足这一需求,我们设计并开发了一个基于PHP的在线课程学习

    2024年02月19日
    浏览(36)
  • 网络安全 Day26-PHP 简单学习

    php存量多 开源软件多 很多安全流程 渗透方法 sql注入基于PHP语言 入门简单 格式: ?php 内容?或?内容? 结尾分号 例子 可变变量: $变量名 = 赋值内容 外部变量: 一些已经定义好的表示特定内容的变量 单引号: 单纯文本输出不会解析文本中的变量但是效率高 双引号: 输出文本内容但

    2024年02月14日
    浏览(41)
  • PHP毕业设计课题选题(14)基于web网页网站PHP在线教室视频点播学习系统设计与实现

     博主介绍 :《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包