首页 > 编程语言 >PHP

PHP

时间:2024-02-10 18:33:36浏览次数:25  
标签:函数 作用域 global echo PHP 变量

PHP

PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。
PHP脚本在服务器上执行。

PHP文件

PHP文件可包含HTML、CSS、JavaScript代码和 PHP 代码
PHP代码在服务器上执行,结果以纯 HTML 形式返回给浏览器
PHP 文件的默认文件扩展名是.php

PHP功能

PHP 可以生成动态页面内容
PHP 可以创建、打开、读取、写入、关闭服务器上的文件
PHP 可以收集表单数据
PHP 可以发送和接收 cookies
PHP 可以添加、删除、修改您的数据库中的数据
PHP 可以限制用户访问您的网站上的一些页面
PHP 可以加密数据
通过 PHP,不再限于输出 HTML。您、可以输出图像、PDF 文件,甚至 Flash 电影。还可以输出任意的文本,比如 XHTML 和 XML。

为什么使用 PHP

PHP 可在不同的平台上运行(Windows、Linux、Unix、Mac OS X 等)
PHP 与目前几乎所有的正在被使用的服务器相兼容(Apache、IIS 等)
PHP 提供了广泛的数据库支持(但是无)
PHP 是开源免费: www.php.net
PHP 易于学习

PHP安装

PHP7.4
Web 服务器(Apache)
MySQL数据库

集成服务器组件

Windows 系统可以使用 WampServer
XAMPP 支持 Mac OS 和 Windows 系统

IDE集成开发环境

Eclipse for PHP(免费开源)
PhpStorm(收费)

PHP语法

PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器。

PHP标签

PHP 脚本可以放在文档中的任何位置。

<?php
    //PHP代码
?>

PHP 脚本以 结束.

PHP注释

<!DOCTYPE html>
<html>
<body>

<h1>My first PHP page</h1>

<?php
// 这是 PHP 单行注释

/*
这是
PHP 多行
注释
*/
echo "Hello World!";
?>  

</body>
</html>

PHP变量

变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)

<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>

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

PHP 变量作用域

变量的作用域是脚本中变量可被引用/使用的部分。
local
global
static
parameter
局部和全局作用域
在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问;

<?php
$x=5; // 全局变量

function myTest()
{
    $y=10; // 局部变量
    echo "<p>测试函数内变量:<p>";
    echo "变量 x 为: $x";   //没使用global,
    echo "<br>";
    echo "变量 y 为: $y";
} 

myTest();

echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
?>

image
global关键字
global关键字用于函数内访问全局变量。在函数内调用函数外定义的全局变量,需要在函数中的变量前加上 global 关键字:

<?php
$x=5;
$y=10;

function myTest()
{
    global $x,$y;
    $y=$x+$y;
}

myTest();
echo $y; // 输出 15
?>

PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

<?php
$x=5;
$y=10;

function myTest()
{
    $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}

myTest();
echo $y;
?>

Static作用域

当一个函数完成时,它的所有变量通常都会被删除。有时候希望某个局部变量不要被删除。需要第一次声明变量时使用 static 关键字:

<?php
function myTest()
{
    static $x=0;
    echo $x;
    $x++;
    echo PHP_EOL;    // 换行符
}
 
myTest();
myTest();
myTest();
?>

参数作用域

参数是通过调用代码将值传递给函数的局部变量。参数是在参数列表中声明的,作为函数声明的一部分:

<?php
function myTest($x)
{
    echo $x;
}
myTest(5);
?>

echo/print 语句

<?php
$txt1="PHP";
$txt2="PHP2";
$cars=array("Volvo","BMW","Toyota");

echo $txt1;
echo "<br>";
echo "在字符串中显示 $txt2 变量 ";
print "<br>";
print "字符串中显示数组 {$cars[0]}";
?>

EOF

  1. 必须后接分号,否则编译通不过。
  2. EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
  3. 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
  4. 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
  5. 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。

1.以 <<<EOF 开始标记开始,以 EOF 结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。
2.开始标记和结束标记相同,比如常用大写的 EOT、EOD、EOF 来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。
3.位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 . 或 , 来拼接

<?php
$name="php";
$a= <<<EOF
        "abc"$name
        "123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>

数据类型

// String(字符串)
<?php 
$x = "Hello world!";
echo $x;
echo "<br>"; 
$x = 'Hello world!';
echo $x;
?>

// Integer(整型)
<?php 
$x = 5985;
var_dump($x);
echo "<br>"; 
$x = -345; // 负数 
var_dump($x);
echo "<br>"; 
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);
?>

// Float(浮点型)
<?php 
$x = 10.365;
var_dump($x);
echo "<br>"; 
$x = 2.4e3;
var_dump($x);
echo "<br>"; 
$x = 8E-5;
var_dump($x);
?>

// Boolean(布尔型)
$x=true;
$y=false;

// Array(数组)
<?php 
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);
?>

// Object(对象)
<?php
class Car
{
  var $color;
  function __construct($color="green") {
    $this->color = $color;
  }
  function what_color() {
    return $this->color;
  }
}
?>

// NULL(空值)
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>

// Resource(资源类型)
<?php
$c = mysql_connect();
echo get_resource_type($c)."\n";
// 打印:mysql link

$fp = fopen("foo","w");
echo get_resource_type($fp)."\n";
// 打印:file

$doc = new_xmldoc("1.0");
echo get_resource_type($doc->doc)."\n";
// 打印:domxml document
?>

类型比较

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

<?php
if(42 == "42") {
    echo '1、值相等';
}
 
echo PHP_EOL; // 换行符
 
if(42 === "42") {
    echo '2、类型相等';
} else {
    echo '3、类型不相等';
}
?>

// 比较 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
define("GREETING", "Hello World");

function myTest() {
    echo GREETING;
}
 
myTest();
?>

注意:自 PHP 7.3.0 开始,定义不区分大小写的常量已被弃用。从 PHP 8.0.0 开始,只有 false 是可接受的值,传递 true 将产生一个警告。

字符串运算符

<?php
$txt1="Hello world!";
$txt2="What a nice day!";
// 连接字符串
echo $txt1 . " " . $txt2;
// 计算字符串长度
echo strlen("Hello world!");
// 在字符串内查找一个字符或一段指定的文本
echo strpos("Hello world!","world");   //返回6
?>

标签:函数,作用域,global,echo,PHP,变量
From: https://www.cnblogs.com/aeolian/p/18012852

相关文章

  • 3种策略巧妙化解PHP Trait成员属性冲突
    说明PHP语言本身可以用insteadof和as关键字解决多个trait同名成员方法冲突的问题,但是貌似没有直接解决同名成员属性冲突的方案。虽然属性名冲突极少发生,但是不代表不会发生。如果是自定义trait可以复制旧trait文件到新trait,改新文件的成员属性名,引用新trait。直接更改原trai......
  • php,用touch 修改文件时间
     touch($path,$fc_time,$fc_time);echo"\n$path已经被建立,并且重置了修改时间和访问时间\n";echo"\n如果是windows系统,将会执行以下命令重置该文件的建立时间\n";if(PHP_OS==='WINNT'){$path=str_replace('/','\\......
  • Apache配置不同目录绑定不同版本的PHP
    Apache配置不同目录绑定不同版本的PHPhttps://aka.ms/vs/17/release/vc_redist.x64.exehttps://www.apachelounge.com/download/VS17/binaries/httpd-2.4.58-310124-win64-VS17.ziphttps://www.apachelounge.com/download/VS17/modules/mod_fcgid-2.3.10-win64-VS17.zipDefine......
  • Ubuntu安装PHP8.2 编译安装 oci8 pdo_oci扩展
    PHP8.2是PHP语言的最新版本。新特性包括,只读类,允许布尔值作为独立类型等。从mysqli中删除libmysql的支持等。时至今天,主流的HTTP服务器已不是Apache,我们推荐使用Nginx作为HTTP服务器,Nginx相对于Apache来说简单且性能更好。本教程将向您展示如何在Ubuntu20.04安装PHP8.2并将其......
  • Version 1.23.0 of PhpSpreadsheet breaks PHP 7.3+ support
    Version1.23.0ofPhpSpreadsheetbreaksPHP7.3+supporthttps://github.com/PHPOffice/PhpSpreadsheet/issues/2779当你升级composerupdate时候,项目跑不通的时候,请检查相关依赖的版本;欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。Don’treinventthewh......
  • ThinkPHP 6.0 SQL注入漏洞修复
    公司买的官网被政府网安检测出SQL注入漏洞:隐患描述SQL漏洞证明语句: python3sqlmap.py-u"http://xxxx?keywords=1"-pkeywords--level=5--risk=3--tamper=space2comment.py,between.py--current-db--random-agent--time-sec=10--batch--dbms="MySQL"漏洞回显:权......
  • 靶场搭建----phpstudy2018安装及注意问题
    安装官网下载:https://www.xp.cn/download.html新人推荐2018版本phpstudy介绍系统服务------开机自启非服务模式------开机不自启搭建好环境,此时服务器与客户端同时存在服务器:phpstudy所在的目录客户端:除phpstudy所在目录外的都是客户端调整phpstud......
  • 第22天:安全开发-PHP应用&留言板功能&超全局变量&数据库操作&第三方插件引用
    #数据库操作-mysqli函数&增删改查PHP函数:连接,选择,执行,结果,关闭等参考:https://www.runoob.com/php/php-ref-mysqli.html常用:mysqli_connect()打开一个到MySQL的新的连接。mysqli_select_db()更改连接的默认数据库。mysqli_query()执行某个针对数据库的查询。mysqli_fetch......
  • php下载远程图片保存到本地
    /***下载远程图片保存到本地*@param$url文件url*@param$save_dir保存文件目录*@param$filename保存文件名称*@param$type使用的下载方式*@returnbool*/functiondownloadImage($url,$save_dir='',$filename=''){if(trim($url)==......
  • PHP导出Excel,从xlswriter到golang的进化是2分缩减到5秒
    先看图 一、介绍xlswriter是一个高效处理excel文件的PHP扩展,底层以C语言实现;处理速度是PHPExcel几十倍甚至几百倍的效率。官方链接:https://gitee.com/viest/php-ext-xlswriter缺点:更深入的功能(例如读取excel图片)健全;导出excel样式不够丰富导出excel文件,xlswriter绝对是效......