您的位置:首页 > 编程语言 > PHP开发

php基础——基础语法知识

2020-06-29 04:51 746 查看

php可与html混编

代码示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>这是个php文件</title>
<style>
h1{
width: 200px;
border: 3px solid gold;
text-align: center;
}
</style>
<script>
alert('OK');
</script>
</head>
<body>
<?php
for ($i=0; $i<10; $i++){
echo "<h1>hello-$i</h1>";
}
?>
</body>
</html>

内存分析

流程分析

1.浏览器将请求发给

apache

2.
apache
检测请求,若后缀名是
.php
,就去调用
php处理模块
,该模块将全部php代码读入模块内处理
3.
php处理模
块根据标记,仅处理php代码,处理结束将代码重新封装交给
apache

4.
apache
将代码交给浏览器,浏览器拿到的是处理后的代码,是看不到php源代码的
5.浏览器解析代码,展示给用户

php是弱类型语言

  • php是若数据类型语言,不必向 PHP 声明该变量的数据类型
  • PHP 会根据变量的值,自动把变量转换为正确的数据类型
  • 在强类型的编程语言中,必须在使用变量前先声明 (定义)变量的类型和名称

php是解释型语言

解释型语言:通俗点就是看一行执行一行,列如javascript、php、python都为解释型语言 优点:跨平台 缺点:稍微慢点

编译型语言:c/c++ 通篇翻译然后在执行,优点:快 缺点:移值性不好(不跨平台)

php数据类型

  • 基本数据类型:整形 浮点型 字符串 布尔
  • 复合数据类型:数组 对象
  • 特殊数据类型:资源 NULL

php定义变量

  • php如果只是声明,但是没有定义,会报undefind,如
    $a
  • js中也是这样,但强类型语言不是
  • php中普通变量名

php变量命名规范

  • php变量前面必须加上
    $
    符号
  • php变量区分大小写,函数不区分大小写

php表达式

  • 在PHP中,几乎所写的任何东西都是一个表达式
  • 简单但却最精确的定义一个表达式的方式就是“任何有值的东西”
$a = 10;    // 表达式 10返回给$a
$b = 10*2;  // 表达式 先运算在返回给$b

function test(){
}
$c = test();    // 表达式 返回值为null
var_dump($c);

php动态变量名

  • php中变量名,常量名,函数名,类名是可变的
  • 遇到$变量名(),php会解析变量,然后调用函数
// 动态变量名
$animal = "动物";
$dog = "animal";
$hsq = "dog";
echo $animal, $$dog, $$$hsq;  //动物动物动物

// 动态常量名
define("PI", 3.14);
$test = 'PI';
echo constant($test);

// 动态函数名
function dance(){
echo '跳舞';
}
$test = 'dance';
$test();

php是以文件整体来执行的

php是以文件作为整体来执行的,如果如果进入代码区时发现有语法错误,会报错,且不输出任何数据

// 直接报错,不输出任何数据
$a = 111;
function test(){
echo 'hello'
}
$b = 222;

php变量作用域

内存角度

  • 如果没有变量指向数据,那数据就销毁(除了超全局和静态)
  • 局部变量,如果不人为unset()的话,函数调用结束,为函数开辟的栈销毁,原本函数栈中变量指向的数据不在有变量指向,也随之销毁
  • 全局变量,如果不人为unset()的话,脚本执行完毕主栈才销毁,主栈销毁,原本主栈中变量指向的数据不在有变量指向,也随之销毁
  • 超全局变量,与全局的区别就是即使在函数内,也可以直接用,无需global

概念角度

  • 局部变量:函数内部有效
  • 全局变量:在函数外部有效(在函数内部通过global访问)
  • 超全局变量:在一个脚本的全部作用域中都可用,在函数或方法中无需执行 global 就可以访问

代码示例

// 全局变量
$a = 1;
function test(){
// 局部变量
$b = 2;
// 在函数内使用全局变量
global $a;  // 等价于 $a=&$GLOBAL[$a] ,此时主栈和新栈都有一个$a 指向同一个数据
// 函数内直接使用超全局变量
var_dump($GLOBALS);
// 函数内利用超全局变量访问全局变量
echo $GLOBALS[$a];

}

test();

为什么PHP函数可以在定义声明前就能调用?PHP程序的执行不是从上到下的吗?函数全局性的基本原理是什么?

首先PHP不是单纯的按照行来边解释边执行的,而是先由Zend引擎翻译PHP代码到Zend二进制操作码,然后再去执行操作码。

对于函数的位置,因为函数的作用域是全局的,所以只要定义了,那么就可以在任意位置去调用它。

PHP 中的所有函数和类都具有全局作用域,可以定义在一个函数之内而在之外调用,反之亦然。(348讲)

348讲解释: php在执行的时候,是以文件为单位执行,也就是说,在执行php代码时,整个文件已经被调入内存

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: