- - 写这篇文章的原因 - -
1、输出语句 “echo”、“print”、“print_r”、“var_dump”的区别。
- echo:输出字符串,简单类型变量的值,多个值之间用逗号分隔,无返回值。
- print():只能打印出简单类型变量的值(如int,string),成功显示则返回true,否则返回false。。
- print_r():可以打印出简单、复杂类型变量的值(如数组,对象)
- var_dump():输出所有类型的详细信息
- Echo,print是PHP语句, print_r是函数,
2、PHP的数据类型
整型 | 检测函数 |
---|
整型 Integer | is_integer() | 浮点型 Float | is_float() | 布尔型 Boolean | is_bool() | 字符串 String | is_string() | 数组 Array | is_array() | 对象 Object | is_object() | 空值 NULL | is_null() |
3、常用的数组函数
- count():数组元素个数
- max() ; min():数组最大最小元素
- array_sum():数组元素总和
- in_array():是否存在某个值
- array_search():是否存在值并返回索引
- array_key_exists():是否存在某个键
- array_keys():返回所有键于新数组
- array_values():返回所有值于新数组
- sort() ; rsort() 按值升降序排序(键自动修改为整数)
- ksort() ; krsort() 按键升降序排序(保持原来的键)
- array_merge():合并数组到新数组
- 更多可参考以下网址
https://www.php.net/manual/zh/ref.array.php
4、(static)声明的 静态变量 与(global)声明的全局变量有什么区别
- 函数内定义的静态变量虽然在函数执行完后,其值继续保存,不会销毁,但在函数外依然不可使用,而在函数内经global声明的全局变量在函数外可以使用。
- static声明的静态变量只初始化一次,global声明的全局变量会重复初始化。以下代码的运行结果是“012- - -000”
<?php
function sta(){
static $s = 0;
echo $s;
$s++;
}
sta();sta();sta();
echo '<br>';
function gla(){
global $g;
$g = 0;
echo $g;
$g++;
}
gla();gla();gla();
?>
5.1、require 和include的区别
疑问1:
- 翻阅许多资料都说include引入文件的时候,如果碰到错误,会给出错误提示,并继续运行下边的代码; require引入文件的时候,如果碰到错误,会给出错误提示,并停止运行下边的代码。
include引入不存在的文件:  require引入不存在的文件:  如果错误是引入不存在的文件,则结果和上述一致。
- 但若是引入PHP文件中的代码存在致命错误如语句结尾分号漏写、使用全角符号、关键字拼错等,则 require 和 include 的结果一致,都是只执行到引用文件语句以上的代码,然后显示报错信息,不执行 引入的文件的代码以及引入文件语句以下的代码。
inre.php文件代码
<?php
echo 'inre'.'<br>';
echo 'inre'.'<br>'
echo 'inre'.'<br>';
include.php文件代码 ( include 包含 inre.php )
<?php
echo '---include!!!'.'<br>';
include "inre.php";
echo 'include!!!---'.'<br>';
运行结果 
require.php文件代码 ( require 包含 inre.php )
<?php
echo '---require!!!'.'<br>';
require "inre.php";
echo 'require!!!---'.'<br>';
运行结果 
疑问2:
- include 是有条件包含函数,require是无条件包含函数,但执行以下代码,结果均未包含对应文件。
(PHP版本为5.6.40 / 7.4.9 )
 其他区别:
- include有返回值,require没有。
- include每次执行都要进行读取和评估,require执行时只需要处理一次。因此被包含文件里的代码需要多次执行时用require效率比较高。
- require通常放在程序的最前面,实际上就是把代码替换到require语句,作为程序的一部分。而include一般放在流程控制的处理部分。PHP程序网页在执行到该行代码时才将文件读进来,这种方式可以把程序执行时的流程简单化。
5.2、那什么时候用require,什么时候用include呢?
- 针对以上第一点,视实际情况是否需要返回值而论。
- 针对以上第二点,当被包含文件里的代码需要多次执行时,用require效率比较高。
- 针对以上第三点,一些资料说在每次循环时,将不同的文件包含进来,实现此功能必须用include,
但…当我尝试用require写,其实也可以。这可直接给我整不懂了…难道是我忽略了什么细节??!尝试清缓存,换浏览器,把PHP版本7.4.9换到5.6.40,结果一样emmmm… 
6、GET 和 POST 的区别
GET | POST |
---|
传递的数据在url后面,以&分隔 | 用户看不到数据 | 传递的数据有长度限制 (1024字节) | 传递的数据没有长度限制 |
相同点 |
---|
都是以键值对的方式存取 $_GET[‘key’] 、 $_POST[‘key’] | 表单中name属性作为键 ,value作为值 |
- 另外,当不明确是GET请求还是POST请求时,可以用$_REQUEST变量,同样以键值对的方式存取 $_REQUEST[‘key’] ,其中包含 GET请求传递的数据,也包含了POST请求传递的数据。
7、SESSION 与 COOKIE的区别
- 一个cookie大小限制为4k,session大小可以在php.ini里设置。
- SESSION存储在服务器端,COOKIE保存在客户端。Session比较安全,cookie用某些手段可以修改,不安全。
- Session保存在服务器端的文件或数据库中,默认保存在文件中,文件路径由php配置文件的session.save_path指定。Session文件是公有的。Session的缺点:因为保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗。
8、PHP 中传值与传引用的区别
- 按值传递:函数范围内对值的任何改变在函数外部都会被忽略。
- 按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改。
- 优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。
9、文件操作
$mode | 描述 |
---|
r | 只读 | r+ | 读写 | w | 重写 | w+ | 读取、重写 | a | 追写 | a+ | 读取、追写 | x | 新建并写入 | x+ | 新建并读写 |
10、时间函数
参数 | 描述 |
---|
Y | 年份 4位数字,如 2021 | y | 年份 2位数字,如 21 | M | 月份 3个字母英文单词缩写,如 Aug | m | 月份 补0,如 08 | n | 月份 不补0,如 8 | d | 日 补0,如 08 | j | 日 不补0,如 08 | dS | 日 加th后缀,如08th | jS | 日 加th后缀,如8th | G | 24小时制,不补0 | g | 12小时制,不补0 | H | 24小时制,补0 | h | 12小时制,补0 | i | 分钟数,补0 | s | 秒数,补0 | D | 星期 3个字母英文单词缩写,如 Wed | l | 星期 完整的英文单词,如 Wednesday | w | 数字表示星期几,如 3 |
|