【零基础小白的华丽蜕变】PHP基础教程,新手入门必备

 
人若有志,万事可为!(放弃了,你就是笑话一段。)

 


1. PHP 概念

超文本预处理器 (Hypertext Preprocessor)是在服务器端执行的 脚本语言,尤其适用于Web开发并可嵌入HTML中,该语言的主要目标是允许web开发人员 快速编写动态网页。PHP 中,所有的变量都是页面级的,无论是全局变量, 还是类的静态成员,都会在页面执行完毕后被清空。

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

在这里插入图片描述

 


2. PHP 变量

  • 变量作用域
    变量以 $ 符号开始,后面跟着变量的名称,变量名不能包含空格,区分大小写
作用域说明
local局部变量,仅能在函数内访问
global全局变量,可以在脚本中任意位置访问
static静态变量,函数执行完毕后,变量不会被删除
parameter函数参数变量,作为函数声明的一部分
<?php
// 在所有函数外部定义的变量,拥有全局作用域。
$name="ouseki";
$a=1;
$b=2;
// 函数参数变量
function myTest($x)
{ 
 // 静态变量,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。
 static $z=99;
 // 要在一个函数中访问一个全局变量,需要使用 global 关键字或者使用 $GLOBALS[index] 数组
 global $a;
 $a=$a+$GLOBALS['b'];
 // 局部变量
 $part=10;
    echo $x;
    echo PHP_EOL;
    echo $z;
    $z++;
}
myTest(5);
echo "<br>";
echo "$name<br>";
echo "$a<br>";
// 局部变量,方法运行完后自动删除,无法读取
echo "$part<br>";
myTest(5);
echo PHP_EOL;
myTest(5);
?> 
................................................................
・【CONSOLE】実行結果
	5 99
	ouseki
	3
	
	5 100 
	5 101

 


3. PHP 输出语句

  1. echo(): 可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。
  2. print(): 函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。
  3. print_r(): 可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。
  4. var_dump(): 判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
<?php
$txt1="白羊";
$txt2="赵航";
$arrays=array("IT","God","Road");
 
print "$txt1<br>";
echo "$txt1-$txt2<br>";
print_r($arrays);
echo "<br>";
var_dump($arrays);
echo "<br>";
print "{$cars[0]}";
?>
................................................................
・【CONSOLE】実行結果
	白羊
	白羊-赵航
	Array ( [0] => IT [1] => God [2] => Road )
	array(3) { [0]=> string(2) "IT" [1]=> string(3) "God" [2]=> string(4) "Road" }

 


4. PHP 定界符

  1. 必须后接分号,否则编译通不过。
  2. EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
  3. 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
  4. PHP 定界符 EOF 的作用就是按照原样,包括换行格式什么的,输出在其内部的东西;
  5. 在 PHP 定界符 EOF 中的任何特殊字符都不需要转义;
<?php
$name="变量会被解析";
$a=<<<EOF
$name<br><a>html格式会被解析</a><br/>双引号和Html格式外的其他内容都不会被解析
"双引号外所有被排列好的格式都会被保留"
"但是双引号内会保留转义符的转义效果,比如table:\t和换行:\n下一行"
EOF;
echo $a;
?> 
................................................................
・【CONSOLE】実行結果
	变量会被解析
	html格式会被解析
	双引号和Html格式外的其他内容都不会被解析 "双引号外所有被排列好的格式都会被保留" "但是双引号内会保留转义符的转义效果,比如table: 和换行: 下一行"

 


5. PHP 常量

  • 常量在整个脚本中都可以使用。设置常量,使用 define() 函数
    bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
  • 该函数有三个参数
    1.name:必选参数,常量名称,即标志符。
    2.value:必选参数,常量的值。
    3.case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。
<?php
// 区分大小写的常量名
define("ouseki", "IT God Road");
echo ouseki;
echo '<br>';
// 报错
echo Ouseki;
?>
................................................................
・【CONSOLE】実行結果
	IT God Road
	Warning: Use of undefined constant Ouseki - assumed 'Ouseki' (this will throw an Error in a future version of PHP) in /usercode/file.php on line 7 Ouseki

 


6. PHP 运算符

  • 并置运算符
    PHP 中只有一个字符串运算符. 用于把两个字符串值连接起来。
<?php
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . $txt2;
?>
................................................................
・【CONSOLE】実行結果
	Hello world!What a nice day!
  • 逻辑运算符
运算符名称描述
a and b如果 a 和 b 都为 true,则返回 true
a or b如果 a 和 b 有一个为 true,则返回 true
a xor b异或如果 a 和 b 有且仅有一个为 true,则返回 true
a && b如果 a 和 b 都为 true,则返回 true
a || b如果 a 和 b 有一个为 true,则返回 true
!a如果 a 不为 true,则返回 true
  • 太空舱操作符

PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符
$c = $a <=> $b

如果 $a  > $b,$c 的值为 1
如果 $a == $b,$c 的值为 0
如果 $a  < $b,$c 的值为 -1
<?php
// 整型
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
 
// 浮点型
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
 
// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>
  • 运算符优先级

请参照菜鸟教程:点击这里

<?php
// 优先级: &&  >  =  >  and
// 优先级: ||  >  =  >  or
 
$a = 3;
$b = false;
// 先赋值后进行或运算
$c = $a or $b;
// 这里的 $c 为 int 值3,而不是 boolean 值 true
var_dump($c);
// 利用小括号先进行或运算,后赋值
$c = ($a or $b);
//这里的 $c 就是 boolean 值 true 
var_dump($c);
// 先进行或运算,后赋值
$d = $a || $b;
//这里的 $d 就是 boolean 值 true 
var_dump($d);
?>
................................................................
・【CONSOLE】実行結果
	int(3) 
	bool(true) 
	bool(true)

 


7. PHP 数组

  • 键值对数组
    5.4 起,PHP可以使用短数组定义语法,用 [] 替代 array(), 还可以创建键值对数组。
<?php
$arr1 = ['value1','value2','value3'] ;
$arr2 = ['key1'=>'value1','key2'=>'value2','key3'=>'value3'];
$arrlength=count($arr1);
for($x=0;$x<$arrlength;$x++)
{
    echo $arr1[$x];
    echo "<br>";
}

foreach($arr2 as $x=>$x_value)
{
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
?>
................................................................
・【CONSOLE】実行結果
	value1
	value2
	value3
	Key=key1, Value=value1
	Key=key2, Value=value2
	Key=key3, Value=value3

 


8. PHP 超级全局变量

  • 预定义的超级全局变量
    在一个脚本的全部作用域中都可用,不需要特别说明,就可以在函数及类中使用。
超级全局变量说明
$GLOBALS包含了全部变量的全局组合数组。变量的名字就是数组的键
$_SERVER由 Web 服务器创建(可能会忽略一些),包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组
$_REQUEST用于收集HTML表单提交的数据
$_POST用于收集HTML表单提交的数据,"method=“post”
$_GET用于收集HTML表单提交的数据,"method=“get”
$_FILES
$_ENV
$_COOKIE
$_SESSION
<?php 
// 当前执行脚本的文件名,与 document root 有关。
echo $_SERVER['PHP_SELF'];
echo "<br>";
// 当前运行脚本所在的服务器的主机名
echo $_SERVER['SERVER_NAME'];
echo "<br>";
// 当前运行脚本所在的服务器的 IP 地址。
echo $_SERVER['SERVER_ADDR'];
echo "<br>";
// 请求开始时的时间戳。从 PHP 5.1.0 起可用。 (如:1377687496)
echo $_SERVER['REQUEST_TIME'];
echo "<br>";
// query string(查询字符串),如果有的话,通过它进行页面访问。
echo $_SERVER['QUERY_STRING'];
echo "<br>";
// 当前请求头中 Host: 项的内容,如果存在的话。
echo $_SERVER['HTTP_HOST'];
echo "<br>";
// 浏览当前页面的用户的 IP 地址。
echo $_SERVER['REMOTE_ADDR'];
echo "<br>";
// URI 用来指定要访问的页面。例如 "/index.html"。
echo $_SERVER['SCRIPT_URI'];
echo "<br>";
// 包含当前脚本的路径。这在页面需要指向自己时非常有用。
echo $_SERVER['SCRIPT_NAME'];
?>
................................................................
・【CONSOLE】実行結果
	/usercode/file.php
	
	
	1616404052
	
	
	
	
	/usercode/file.php

 


9. PHP 魔术常量

  • 8个魔术常量
    它们的值随着它们在代码中的位置改变而改变,这些特殊的常量不区分大小写
超级全局变量说明
__LINE__文件中的当前行号
__FILE__文件的完整路径和文件名
__DIR__文件所在的目录
__FUNCTION__函数名称(PHP 4.3.0 新加)
__CLASS__类的名称(PHP 4.3.0 新加)
__TRAIT__Trait 的名字(PHP 5.4.0 新加),代码复用的一个方法
__METHOD__类的方法名(PHP 5.0.0 新加)
__NAMESPACE__当前命名空间的名称(区分大小写)
<?php
namespace MyProject;
echo '这是第 " '  . __LINE__ . ' " 行';
echo "<br>";
echo '该文件位于 " '  . __FILE__ . ' " ';
echo "<br>";
echo '该文件位于 " '  . __DIR__ . ' " ';
echo "<br>";
class test {
    function _print() {
        echo '类名为:'  . __CLASS__ . "<br>";
        echo '函数名为(FUNCTION):' . __FUNCTION__ . "<br>";
        echo '函数名为(METHOD):' . __METHOD__ ;
    }
}
$t = new test();
$t->_print();
echo "<br>";
echo '命名空间为:'  . __NAMESPACE__ ;
echo "<br>";
class Base {
    public function sayHello() {
        echo 'Hello ';
    }
}
 
trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo "<br>";
        echo 'Trait为:' .__TRAIT__.'<br/>';
        echo 'World!';
    }
}
 
class MyHelloWorld extends Base {
    use SayWorld;
}
 
$o = new MyHelloWorld();
$o->sayHello();
?>
................................................................
・【CONSOLE】実行結果
	这是第 " 3 " 行
	该文件位于 " /usercode/file.php "
	该文件位于 " /usercode "
	类名为:MyProject\test
	函数名为(FUNCTION):_print
	函数名为(METHOD):MyProject\test::_print
	命名空间为:MyProject
	Hello
	Trait:MyProject\SayWorld
	World!

 


【每日一面】

写一个遍历指定目录下所有子目录和子文件的函数
<?php
function dir_all($path) { 
    $handler = opendir($path); 
    while (false !== ($tmp = readdir($handler))) {    // $tmp 第 1 次是 ".",第2次是 "..", 之后是文件名或目录名,和Linux中使用 ls 的效果一样
        if(is_dir("$path/$tmp")) {   // 如果是一个目录
            if ($tmp == "." || $tmp == "..")  // 不输出,也不递归调用
                continue; 
            echo $tmp . "<br>";      // 输出目录名字
            dir_all("$path/$tmp");  // 把当前目录名接到 $path 上,递归调用
        } 
        else {
            echo $tmp ."<br>";  // 如果是一个文件,直接输出
        } 
    } 
}
dir_all("C:\Users");  // 输出 ms 文件夹下的所有文件名、子目录名以及子目录下的文件名
?>
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值