(小白)PHP基础学习002 20201002
历程
- 输出
<?php
$a=1;
echo "01:",$a," ";
echo "02:",print($a)," ";
//print $a," ";//报错PHP Parse error: syntax error, unexpected ','
print "03:";
print $a;
print " ";
print_r("04:",$a);
?>
结果:
01:1 02:11 03:1
这里04没有输出,因为print_r不是这么用的,具体可见:
https://www.runoob.com/php/php-print_r-function.html
bool print_r ( mixed $expression [, bool $return ] )
参数说明:
$expression: 要打印的变量,如果给出的是 string、integer 或 float 类型变量,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。
$return: 可选,如果为 true 则不输出结果,而是将结果赋值给一个变量,false 则直接输出结果。
返回值
$return 如果设为 true 才有返回值,为一个易于理解的字符串信息。
而02部分多了一个1,我觉得原理如下吧:
<?php
echo "02:",print(TRUE)," ";
结果:
02:11
输出了两个1,这个print()返回为TRUE,所以打印为1
- 时间的函数:
date():按照指定格式对应的时间戳,根据格林威治时间开始计算的秒数
格林威治时间 :百科:https://baike.baidu.com/item/%E4%B8%96%E7%95%8C%E6%97%B6/692237?fromtitle=%E6%A0%BC%E6%9E%97%E5%A8%81%E6%B2%BB%E6%97%B6%E9%97%B4&fromid=99824&fr=aladdin
1970年1月1日0时0分0秒
microtime():获取微秒级别的时间
<?php
//YMD大小写是有区别的
echo date("Y年M月D日 H:i:s",1601690400),"\r\n";
echo date("y年m月d日 H:i:s",1601690400),"\r\n";
echo time(),"\r\n";
echo microtime(),"\r\n";
echo date("Y年M月D日 H:i:s",strtotime('tomorrow 10 hours')),"\r\n";
echo strtotime('tomorrow 10 hours');
结果:
2020年Oct月Sat日 10:00:00
20年10月03日 10:00:00
1601645609
0.76648400 1601645609
2020年Oct月Sat日 10:00:00
1601690400
- 换行
https://blog.csdn.net/qq_41912505/article/details/88852709
<?php
print "换行:01";
echo "\r";//注意斜杆是"\",要用双引号
print "换行:02";
echo "\n";//注意斜杆是"\",要用双引号
print "换行:03";
echo "\r\n";//注意斜杆是"\",要用双引号
print "换行:04";
echo PHP_EOL;//也可以用PHP_EOL换行
print "结束";
结果:
换行:01
换行:02
换行:03
换行:04
结束
- 文件加载
文件加载原理:
1、在文件加载(include或者require)的时候,系统会自动的将被包含文件中的代码相当于嵌入到当前文件中
2、加载位置,在哪加载,对应的文件中的代码嵌入的位置就是引入的位置,就是对应的include位置
3、在PHP中被包含文件是单独进行编译的,被引用时,只有执行到这个引用时,才会提示报错(如果内部有错误的话)
PHP代码执行流程:
1、读取代码文件(PHP程序)
2、编译:将PHP代码转换成字节码(生成opcode)
3、zendengine来解析opcode,按照字节码进行逻辑运算
4、转换成对应的HTML代码
-
include和include_once的区别
include:系统遇到多次,就运行多次
include_once:系统遇到多少次,也只会运行一次 -
require和include的区别
包含到文件的时候,报错的形式不同,include的报错级别较低,不会影响其它代码执行,而require的报错级别较高,后面的程序不会被执行。
其它功能都基本一样。
-
文件加载路径
绝对路径:
从磁盘的根目录开始
Win:C:/路径/PHP文件
Linux:/路径/PHP文件(Linux没有盘符的概念)
从网站的根目录开始
相对于网站主机名字对应的路径:
localhost/index.php
相对路径:
. 或者 ./ :表示当前文件夹
…/ :表示上级目录(当前文件所在的上级) -
文件嵌套包含
嵌套包含时很容易出现相对路径出错的问题 -
函数
先编译后执行
<?php
hi();
function hi(){
echo "hi";
}
结果:
hi
但这个方式在python中是不行的:
hi()
def hi():
print("hi")
结果:
Traceback (most recent call last):
File "/usercode/file.py", line 1, in <module>
hi()
NameError: name 'hi' is not defined
这个是PHP的一个特点
-
函数参数
默认值都放在最右边,不能左边有默认值,右边却没有 -
引用传值
没有引用传值的情况下:
<?php
$a=1;
function change($arg){
$arg=3;
}
change($a);
echo $a;
?>
输出的结果:
1
如果用引用传值:&
<?php
$a=1;
function change(&$arg){
$arg=3;
}
change($a);
echo $a;
?>
输出的结果却是:
3
也就是输入的实参被改变了
这里的参数本身必须是变量
-
函数返回值
在PHP中所有函数都有返回值,如果没有指定,那么返回的就是NULL -
作用域
颠覆认知……在PHP中局部是不能直接引用全局变量的,也就是,你不作为参数,就没办法操作……
<?php
$a=1;
$b=2;
function add(){
echo $a+$b;
}
add();
?>
结果:
0
a和b根本没用上
- 函数访问全局变量
把全局变量放到超全局变量中
<?php
$a=1;
$b=2;
function add(){
echo $GLOBALS['a']+$GLOBALS['b'];
}
add();
?>
结果:
3
- Global关键字:可以实现全局访问局部,局部访问全局
这个方法和python相同
<?php
$a=1;
$b=2;
function add(){
global $a;
global $b;
echo $a+$b;
}
add();
?>
结果:
3
这种方式只能在局部中引用全局变量。
这种方式,同样可能在局布中生成全局的变量
<?php
function a(){
global $a;
$a=10;
}
a();
echo $a;
?>
结果:
10