php基础 笔记

经常看到有人说:PHP 是世界上最好的语言。
虽然是以半开玩笑半认真的语气说出,但也反映了PHP 的重要性与其功能之强大。

php中的 :: 是调用类中的静态方法或者常量,属性的符号

位置

PHP 脚本可以放在文档中的任何位置。
PHP 脚本以 <?php 开始,以 ?> 结束:

<?php
// PHP 代码
?>

变量

变量以 $ 开始,后面接变量名称,调用变量也需要带上 $

PHP 是一门弱类型语言
声明变量时不需要声明该变量的数据类型,PHP 会根据变量的值,自动把变量转换为正确的数据类型。

局部和全局作用域
一般学过一两门语言都知道局部和全局作用域了

global 关键字 global 关键字用于函数内访问全局变量。
函数体内引用全局变量,必须在函数内部使用“global”关键字
在这里插入图片描述
Static 作用域 当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,需要在第一次声明变量时使用 static 关键字,然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。

输出

在 PHP 中有两个基本的输出方式: echo 和 print。
区别
· echo - 可以输出一个或多个字符串

· print - 只允许输出一个字符串,返回值总为 1

提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。

语法很简单,就是

echo "...";
print "...";

如果输出变量,不需要加 " "

我觉得最厉害的地方是输出语句可以输出 HTML 标签,这样就可以很方便的进行web 与 mysql 的交互

定界符EOF

PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。

  1. 必须后接分号,否则编译通不过。
  2. 开始标记和结束标记相同,比如常用大写的 EOT、EOD、EOF 来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可
  3. 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
  4. 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
  5. 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。
  6. 位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 . 或 , 来拼接,HTML标签也可以被解析
    在这里插入图片描述
    输出:
    在这里插入图片描述
    但是如果里面包含了界定符就会出错:
    在这里插入图片描述

数据类型

String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。

var_dump() 方法
判断一个变量的类型与长度,并输出变量的数值,如果变量有值,则输出是变量的值,并返回数据类型。
显示关于一个或多个表达式的结构信息,
在这里插入图片描述
php 中数组的定义:

$cars=array("Volvo","BMW","Toyota");

在这里插入图片描述

类型比较

松散比较:使用两个等号 == 比较,只比较值,不比较类型。
严格比较:用三个等号 === 比较,除了比较值,也比较类型。

0 false null
松散比较是相等的,严格比较 不相等

<?php
echo '0 == false: ';
var_dump(0 == false);
echo '0 === false: ';
var_dump(0 === false);
echo PHP_EOL;
echo '0 == null: ';
var_dump(0 == null);
echo '0 === null: ';
var_dump(0 === null);
echo PHP_EOL;
echo 'false == null: ';
var_dump(false == null);
echo 'false === null: ';
var_dump(false === null);
echo PHP_EOL;
echo '"0" == false: ';
var_dump("0" == false);
echo '"0" === false: ';
var_dump("0" === false);
echo PHP_EOL;
echo '"0" == null: ';
var_dump("0" == null);
echo '"0" === null: ';
var_dump("0" === null);
echo PHP_EOL;
echo '"" == false: ';
var_dump("" == false);
echo '"" === false: ';
var_dump("" === false);
echo PHP_EOL;
echo '"" == null: ';
var_dump("" == null);
echo '"" === null: ';
var_dump("" === null);

常量

php 中常量的定义方法我觉得很特别
通过define() 函数设置变量

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

name:必选参数,常量名称,即标志符。
value:必选参数,常量的值。
case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。

常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。

字符串

字符串类型大家都很熟悉了,下面介绍一些字符串中的操作:

PHP 并置运算符
在 PHP 中,只有一个字符串运算符。

并置运算符 . 用于把两个字符串值连接起来。

PHP strlen() 函数
返回字符串长度

PHP strpos() 函数
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。

如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。

数组

在 PHP 中,array() 函数用于创建数组:
在 PHP 中,有三种类型的数组:
数值数组 - 带有数字 ID 键的数组

$cars=array("Volvo","BMW","Toyota");

通过下标访问
获取数组长度:count()
遍历数值数组:

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
 
for($x=0;$x<$arrlength;$x++)
{
    echo $cars[$x];
    echo "<br>";
}
?>

关联数组 - 带有指定的键的数组,每个键关联一个值

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

或:

$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

通过键来访问值
遍历关联数组:

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
 
foreach($age as $x=>$x_value)
{
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
?>

多维数组 - 包含一个或多个数组的数组
一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组。依照这种方式,我们可以创建二维或者三维数组

数组排序:
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列

添加元素
添加数组元素通过array_push()

array_push(array,value1,value2...)

但是这只能添加值,无法指定指定关联数组的键值对。如果想添加关联数组怎么办呢?
1)直接通过指定键来添加值:

$arr["hi"] = "hello";

2)通过数组相加来添加元素

$arr = array("hi"=>"hello") + $arr;

3)使用array_merge方法

$arr = array_merge(array("你好"=>"hello"), $arr);

数组的更多操作请参考:
https://www.runoob.com/php/php-ref-array.html

循环

while循环:
while - 只要指定的条件成立,则循环执行代码块
do…while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环

for循环
普通for循环,大家都知道

foreach 循环
foreach 循环用于遍历数组。每种语言的写法可能大同小异

foreach ($array as $value)
{
要执行代码;
}

函数

PHP 的真正威力源自于它的函数。
在 PHP 中,提供了超过 1000 个内建的函数。

基础的语法和其他语言差不多
php 使用 function 来创建php 函数

PHP 中类的对象调用类中方法使用
->

Static 关键字

声明类属性或方法为 static(静态),就可以不实例化类而直接访问

静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。

由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。

静态属性不可以由对象通过 -> 操作符来访问。

php中的 :: 是调用类中的静态方法或者常量,属性的符号

<?php
class Foo {
  public static $my_static = 'foo';
  
  public function staticValue() {
     return self::$my_static;
  }
}

print Foo::$my_static . PHP_EOL;
$foo = new Foo();

print $foo->staticValue() . PHP_EOL;
?>    

Final 关键字

PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。

$_GET 变量

在 PHP 中,预定义的 $_GET 变量用于收集来自 method=“get” 的表单中的值。
预定义的 $_GET 变量用于收集来自 method=“get” 的表单中的值。
从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制。
何时使用 method=“get”?
在 HTML 表单中使用 method=“get” 时,所有的变量名和值都会显示在 URL 中。

注释:所以在发送密码或其他敏感信息时,不应该使用这个方法!

然而,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。

注释:HTTP GET 方法不适合大型的变量值。它的值是不能超过 2000 个字符的。

$_POST 变量

在 PHP 中,预定义的 $_POST 变量用于收集来自 method=“post” 的表单中的值。
预定义的 $_POST 变量用于收集来自 method=“post” 的表单中的值。

从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。

注释:然而,默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)。

何时使用 method=“post”?
从带有 POST 方法的表单发送的信息,对任何人都是不可见的,并且对发送信息的量也没有限制。

然而,由于变量不显示在 URL 中,所以无法把页面加入书签。

$_REQUEST 变量

预定义的 $_REQUEST 变量包含了 $ _GET、$_POST 和 $_COOKIE 的内容。

$_REQUEST 变量可用来收集通过 GET 和 POST 方法发送的表单数据。

实例
你可以将 “welcome.php” 文件修改为如下代码,它可以接受 $ _GET、$_POST等数据。

欢迎 <?php echo $_REQUEST["fname"]; ?>!<br>
你的年龄是 <?php echo $_REQUEST["age"]; ?>  岁。

包含

includerequire 语句用于在执行流中插入写在其他文件中的有用的代码。

include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:

· require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
· include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。

注意:
require 一般放在 PHP 文件的最前面,程序在执行前就会先导入要引用的文件;
include 一般放在程序的流程控制中,当程序执行时碰到才会引用,简化程序的执行流程。

文件操作

fopen() 函数用于在 PHP 中打开文件。

此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件:

<html>
<body>

<?php
$file=fopen("welcome.txt","r");
?>

</body>
</html>

在这里插入图片描述

检测文件末尾(EOF)

feof() 函数检测是否已到达文件末尾(EOF)。

在循环遍历未知长度的数据时,feof() 函数很有用。

注释:在 w 、a 和 x 模式下,您无法读取打开的文件!
if (feof($file)) echo “文件结尾”;

逐行读取文件
fgets() 函数用于从文件中逐行读取文件。

注释:在调用该函数之后,文件指针会移动到下一行。

下面的实例逐行读取文件,直到文件末尾为止:

<?php
$file = fopen("welcome.txt", "r") or exit("无法打开文件!");
// 读取文件每一行,直到文件结尾
while(!feof($file))
{
    echo fgets($file). "<br>";
}
fclose($file);
?>

逐字符读取文件

fgetc() 函数用于从文件中逐字符地读取文件。

注释:在调用该函数之后,文件指针会移动到下一个字符。

下面的实例逐字符地读取文件,直到文件末尾为止:

<?php
$file=fopen("welcome.txt","r") or exit("无法打开文件!");
while (!feof($file))
{
    echo fgetc($file);
}
fclose($file);
?>

注意:
如果打开一个文件,文件名为中文,如果系统编码和当前文档编码不一致,会导致文件找不到无法打开,解决方法是用 iconv 函数编码转换成一致,如下:

$fpath=iconv('UTF-8','GB2312',"题库.csv");
$file=fopen($fpath,"r") or exit("无法打开文件!");
//此处省略相关操作
fclose($file);   

用相对路径打不开子目录中的文件时,可用绝对路径打开,如下:

$file=fopen(dirname(__FILE__).'\\files\\tk.csv',"r") or exit("无法打开文件!");   
//此处省略相关操作
fclose($file);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值