php示例

互联网基础知识学习:php函数浅析笔记

本节我们一起学习下php的常见函数使用。

01php的EOF(heredoc) 概念及其使用说明

php EOF(heredoc)是一种在命令行shell(如sh、csh、bash、PowerShell等)和程序语言(像Perl、php、Python和Ruby)里定义一个字符串的方法。需要注意的是,EOF是一种字符串方法。

php中的EOF使用概述:

1. EOF使用完成后必须后接分号,否则编译通不过。2. EOF 可以用任意其它字符代替,只需保证结束标志与开始标志一致(比如我们可以用html、EOS等字符串来代替EOF,但是需要保持开始和结束使用的标志符一样,且不能在正文中重复,也就是开始使用了EOF,结束的时候必须使用EOF,但是正文中不能有EOF)。3. 结束标志必须顶格独自占一行并且必须从行首开始,前后不能衔接任何空白和字符。4. 开始标志可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。5.EOF 中是会解析 html 格式内容的,并且在双引号内的内容也有转义效果6. 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当于q和qq的用法。使用示例如下图:

EOF格式示例

02php语言的数据类型

和其他语言一样,php语言的数据的数据类型也包含了字符串、整型、浮点型、数组、对象以及空值,类似于其他语言的对应数据类型,这些东西都是通用的,这里不再赘述。如下代码是先将字符串Hello world赋值给变量x,然后再将x变量的值变为空(null),最后使用var_dump输出x的结果(var_dump会先判断变量的类型和长度,然后输出结果。

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

说明:var_dump() 方法,判断一个变量的类型与长度,并输出变量的数值,如果变量有值,则输出是变量的值,并返回数据类型。显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

03PHP 类型比较

尽管 PHP 是弱类型语言,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较。

松散比较:使用两个等号 == 比较,只比较值,不比较类型。严格比较:用三个等号 === 比较,除了比较值,也比较类型。也就是说,如果一个定义为字符串123,另一个定义为整型变量123,那么在使用"=="来进行比较的时候,这两个值是为true的,而如果使用"==="来进行比较时,那么返回值就是false了。

示例代码如下图:

类型比较示例代码

04PHP 常量

常量值被定义后,在脚本的其他任何地方都不能被改变。

常量是一个简单值的标志符。该值在脚本中不能改变。一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。常量在整个脚本中都可以使用。

设置常量,常量是全局的,可以在对应的范围内使用。一般使用 define() 函数,函数语法如下:bool define (string $name , mixed $value [,bool $case_insensitive =false])

该函数有三个参数:

name:必选参数,就是你所定义的常量名称,即标志符。value:必选参数,定义的常量的值。case_insensitive :可选参数,为ture,表示该常量对大小写不敏感。默认是false(大小写敏感)。

上述就是本次为大家分享的内容,喜欢就点个赞吧,同时也希望大家多多点赞关注!

展开
收起

php如何使用array_merge()函数?(代码示例)

array_merge()是PHP中的一个内置函数,它可以将两个或多个数组的元素或值合并为一个数组,然后返回这个数组。下面我们就来具体介绍一下array_merge()函数的用法,希望对大家有所帮助。

array_merge()函数

array_merge()函数用逗号(',')分隔的数组列表作为需要合并的参数,然后将后一个数组的值附加在前一个数组的末尾,形成一个新数组并返回,这个数组中包含在参数中传递的数组的合并值。

说明:我们可以在参数中传递任意数量的数组。

基本语法:

array array_merge($array1, $array2, ......, $arrayn)

array_merge()函数的使用

下面我们通过简单的示例来介绍array_merge()函数的工作原理,让大家了解如何使用array_merge()函数。

示例1:使用整数键传递参数

如果将参数传递给array_merge()函数,并且此数组参数的键为整数,则输出数组中的键将从0开始重新编号,并将下一个元素的值递增1。

<?php $my_array = array(1 => "PHP", 3=>"Python", 2=>"Java"); $res = array_merge($my_array); echo "<pre>";print_r($res); echo "</pre>";?>

输出:

示例2:合并两个使用整数键的数组

<?php $my_array1 = array(0 => 'zero_a', 2 => 'two_a', 3 => 'three_a'); $my_array2 = array(1 => 'one_b', 3 => 'three_b', 4 => 'four_b'); $res = array_merge($my_array1,$my_array2);echo "<pre>";print_r($res); echo "</pre>";?>

输出:

示例3:综合示例

<?php $my_array1 = array("size" => "big", 2 =>2,3 ); $my_array2 = array(1 =>"a", "b", "size" => "medium", "shape" => "circle", 4); $res = array_merge($my_array1, $my_array2); echo "<pre>";print_r($res); echo "</pre>";?>

输出:

示例说明:

当有两个数组作为参数传递给array_merge()函数时,后一个数组的值将附加在前一个数组的末尾。如果两个元素具有相同的字符串键,则后一个值将覆盖前一个值;如果有整数键,则从零开始重新编号。

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关栏目教程!!!

展开
收起

0058 PHP编程语言实现Python编程语言的6个例子

上一节课讲的是PHP编程语言的分支语句和循环语句,以及常用的字符串函数和数组函数。

有了这些基础知识之后,就可以开始大量的编程练习了。

这节课先来做之前学习Python编程语言的部分稍微简单一些的例子程序,因为之前已经讲解过编程的思路和解法,因此,这节课学哥直接给出程序的例子,大家可以先自己根据题目尝试编写看看,然后再和学哥的程序进行对照学习思考。

从1加到100求和

程序如下:

运行结果:

输出九九乘法表

程序如下:

运行结果:

从1开始连续100个奇数相加是多少

程序如下:

运行结果:

从2开始连续50个偶数相加是多少

程序如下:

运行结果:

输入一个年份,判断输出闰年或者平年

程序如下:

运行结果:

由于PHP是服务器端运行语言,因此不能直接接收用户键盘的输入,但是可以通过在运行PHP程序时传递参数的方式将用户的输入的值传递给PHP程序进行处理,一般使用$argv数组来接收参数,这个数组就是php命令后面的相应的值,可以在程序中使用print_r($argv)来看看具体都是什么样的值。

斐波拉契数列,求第一百个数字

程序如下:

运行结果:

展开
收起

PHP闭包函数(匿名函数)的简介和例子以及与JS的对比

PHP自5.3版本开始就可以支持匿名函数(Anonymous functions)了,也成为闭包函数(closures),闭包函数允许临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。闭包函数都是是通过 Closure 类来实现的。

举一个闭包函数的栗子

闭包函数也可以赋值给变量来使用,PHP 会自动把此种表达式转换成内置类 Closure 的对象。把一个 closure 对象赋值给一个变量的方式与普通变量赋值的语法一样,最后要加上分号结束这段语句,举一个闭包函数变量赋值的栗子

除此之外闭包函数还可以从父作用域继承变量,任何这类变量都应该用 use 语言结构传递进去。 PHP 7.1 起,不能传入superglobals、 $this 或者和参数重名的变量。经常写js的同学应该知道js的闭包特性,简单的说就是在一个函数里可以定义子函数,父函数中的变量在子函数中可以直接使用,PHP的闭包有一点区别

function func1($a){ return function() use ($a){ echo $a; }; } $a = func1("a"); $a();//输出a

下面是javascript闭包以及它的作用和应用场景

PHP闭包函数(匿名函数)的简介和例子以及与JS的对比

https://www.qwzyj.com/thread-161-1-1.html (出处: 全网资源菌)

展开
收起

3分钟短文|PHP 空对象怎么用,3个例子教会你!

引言

我们已经习惯在框架里编写类库接口,使用面向对象的方式构建规模以上的应用程序。但是还有很多机会,时时刻刻与PHP数组打交道。

PHP版本迭代并加入的对象操作特性非常丰富。今天我们来说一说最基础的PHP空对象,怎么使用,以及注意事项。

学习时间

如果是数组,我们可能这样存储数据:

$aVal = array(); $aVal[key1][var1] = "something"; $aVal[key1][var2] = "something else";

那么有没有办法像下面这样操作数据呢?

(object)$oVal = ""; $oVal->key1->var1 = "something"; $oVal->key1->var2 = "something else";

当然了,这个是伪代码。PHP中自带了 stdClass 对象,声明空对象使用下面的方法:

$x = new stdClass();

stdClass是默认的PHP对象。stdClass没有属性,方法或父级。它不支持魔术方法,并且不实现任何接口。

当将标量或数组转换为Object时,将获得stdClass的实例。只要需要通用对象实例,就可以使用stdClass。

创建 stdClass 的示例,可以使用下面的任意方式:

$x = new stdClass; $y = (object) null; // 同上 $z = (object) 'a'; // 创建属性 'scalar' = 'a' $a = (object) array('property1' => 1, 'property2' => 'b');

你需要格外注意:

stdClass不是基类! PHP类不会自动从任何类继承。 所有类都是独立的,除非它们显式扩展了另一个类。 在这方面,PHP与许多面向对象的语言不同。

你无法在代码中定义名为“ stdClass”的类。 该名称已被系统使用。 你可以定义一个名为“Object”的类。也可以定义一个扩展stdClass的类,但不会获得任何好处,因为stdClass不执行任何操作。

再举一个例子:

class CTest {public $property1; } $t = new CTest; var_dump($t instanceof stdClass); // falsevar_dump(is_subclass_of($t, 'stdClass')); // false echo get_class($t) . "\n"; // 'CTest' echo get_parent_class($t) . "\n"; // false (no parent)

注意,PHP的类是独立存在的,上面的 CTest 类也绝不是继承自 stdClass 对象。

写在最后

通过本文,你应该收获一个重要的概念,那就是,PHP 的类除非手动严格指定继承类,否则都是独立存在的。

同时,PHP 提供了标准的 stdClass 对象用于构建空对象。操作数据时可以不用像数组那样了。但是,抛开数组,你讲很大程序上享受不到PHP带来的数据操作便利。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

展开
收起

php中array_map()函数如何使用?(代码示例)

array_map()函数是PHP中一个内置函数,它可以通过一种简单的方式根据用户自定义的条件(函数)来修改一个或多个数组中的所有元素。下面我们就来具体介绍一下array_map()函数的使用方法。

array_map()函数

array_map()函数基本上是将数组的每个元素发送到用户自定义的函数中进行修改或处理,然后返回一个具有该函数修改后新值的数组。

基本语法:

array_map(functionName,arr1,arr2...)

说明:

functionName参数:必需项,代表用户自定义函数的名称。array_map()函数会根据该名称将数组的值传递到该函数中进行处理,在返回。

arr1,arr2.......参数:必需项,代表需要修改的数组,可以是一个数组,也可以是多个数组。

functionName参数是强制性的,我们可以将任意数量的数组(arr1,arr2.......,依此类推)传递给函数进行处理。

array_map()函数的使用示例

下面我们通过简单示例来介绍array_map()函数的使用

示例1:对数组中的值进行处理

<?php function fun1($v) { return ($v + 7); // 数组中的每个元素值都加7} function fun2($v1,$v2) {//判断两个数组中对应的值是否相等,相等则返回1,不相等则返回0。最后形成一个由1和0组成的数组 if ($v1 == $v2) return 1; else return 0; } $arr1 = array(1, 2, 3, 4, 5); $arr2 = array(1, 3, 3, 4, 8); echo "<pre>"; print_r(array_map("fun1", $arr1)); print_r(array_map("fun2", $arr1, $arr2)); echo "</pre>"; ?>

输出:

示例说明:

fun1()可以把数组arr1中的每个元素值都加上7,在返回。

fun2()是判断数组arr1和数组arr2中的值是否相等,相等则返回1,不相等则返回0。最后形成一个由1和0组成的数组。

示例2:array_map()函数创建嵌套数组

<?php $a = array(1, 2, 3); $b = array("one", "two", "three"); $result = array_map(null, $a, $b); echo "<pre>"; print_r($result); echo "</pre>"; ?>

在PHP中,使用array_map()函数可以创建嵌套数组。为此,我们必须传递null作为参数来代替functionName参数和数组列表来创建数组数组。

输出:

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关栏目教程!!!

展开
收起

PHP编程实例:简单的自定义函数过滤字符串功能实现!

有时候用户在网站上发布内容或者留言时,系统提示使用了禁止词语禁止发布。为了避免用户在网站上发布违规违法内容,网站开发人员为了规范网站内容采取了过滤字符串的手段,今天为大家讲解一下自定义函数过滤字符串。

实现过程

1、制作用户评论文本框和评论提交按钮。

1、创建php文件。

2、定义具有过滤功能的验证函数,设定过滤规则。

3、调用函数去判断用户提交内容是否符合规则。

代码如下:

PHP编程实例:简单的自定义函数过滤字符串功能实现!

PHP知识点总结:

1、form标签的action属性

form标签的action属性表示向何处提交表单数据,当action为空时表示数据提交还是这个页面本身。

2、php自定义函数

我们把内容过滤(过滤字符串功能)功能语句都写到函数里方便后续的调用。函数是可以实现特定功能的代码块(程序),大部分编程语言都有这个概念,函数可以更好实现模块功能。函数可以分为父函数和子函数,他们之前可以相互调用。上面代码中我们声明了一个str函数,它具有过滤特定内容(过滤字符串)的功能。

3、数组和php系统函数

这个实例中我们先把我们要过滤的内容(版权、出版、图书、影像)声明成数组$array,再用implode()函数把数组转换成字符串$repstr。数组是不能直接操作的,我们需要把数组转换成字符串再进一步处理。

4、if语句、preg_match() 函数和正则表达式

if语句作用是根据不同的条件执行不同的动作,如果用户输入内容出现了禁止内容提示“使用了系统禁止词语,重新填写”页面重新定位到index.php。如果用户输入内容不包括禁止内容则输出提交成功并输出用户提交内容。

preg_match() 函数是处理正则表达式匹配,成功返回 1 ,否则返回 0。“/$str/”是一个简单的正则表达式表示匹配函数的参数即用户输入内容,preg_match("/$str/",$repstr)意思用户输入内容($str)和设定禁止的内容($repstr)进行匹配,如果匹配成功返回1,if执行为真的内容。如果匹配不成功,返回0,则if执行else内容。

5、empty()函数

为了避免出现非预期的效果,这是使用是empty()函数判断$_POST['sub'](提交的内容)传递参数是否存在。

上面实例只是简单介绍了字符串过滤的原理,如果要运用的话需要把过滤数据存储在数据库中,而不是一个简单的数组。

代码运行结果如下图:

关于自定义函数过滤字符串功能先聊到这,每天学习一个知识点,每日寄语-“滴水穿石,不是力量大,而是功夫深。”

展开
收起

Thinkphp5开启强制路由代码示例详解(防远程攻击必备)

近期thinkphp5在2018年12月9日及2019年1月11日接连爆出的两个高危漏洞,再有很多人反映更新补丁或者升级以后还有被入侵的事情,分两个步骤处理:一:把受影响的网站程序文件最好直接用备份替换,对方很可能留了多个后门文件,如果后门文件没删除干净,还是会被持续更改首页跳转的,升级也没用;二,开启强制路由模式;

以上的说明,切记一定要保证木马文件查杀赶紧,再做处理,备份直接替换是最好的办法,当然如果你没有备份的习惯就只能自己手动查杀,或者请安全公司处理了;

但是个人在开启强制路由模式的时候,碰到两个问题,下面就说下这个两个问题,

问题1:点击网站链接直接进去会打不开,错误提示,路由未定义

问题2:比如后台的页面或者登陆页面,登陆页面可以正常展示,点击登陆的时候,由于需要post提交表单的操作,错误提示,路由未定义;

强制路由设置:

文件:application->config.php;

配置:常规配置路由规则,请自行参照官方手册,开启强制路由以后,所有的方法都需要配置,否则不能正常访问;这里不赘述;https://www.kancloud.cn/manual/thinkphp5/118019

实例解决方案:

提示:做修改之前一定要备份原有代码,因为每个人的开发环境,开发方式都可能有所不同,若有不可预见错误,可及时恢复;

A:问题1解决方案:

文件:application->route.php;

亲测本人开发环境及网站可用,此问题即可解决;

B:问题2解决方案:

前台及后台纯展示页面在开启强制路由以后展示没问题的,但是需要form表单提交数据的操作都会报错;

理论原因:常规的路由页面方法都是get,比如上图首页的路由,但是提交表单的时候一般我用的都是post方法,所以需要在控制器里面拆分展示和提交表单的方法,前端页面提交方法地址也需要修改,路由里面也需要分开设置即可;下面我将会以一个实例分别说明登录页面及登录操作

登录操作:

第一步:拆分控制器方法;

原始的代码如下:

拆分成两个方法如下:

第二步:路由文件设置:

文件:application->route.php;

二者区别在于方法,登录页面的路由方法是get,操作的话就是post;

第三步:login登录页面form表单的提交的action也需要修改:

☆☆☆小提示,控制器写方法的时候,成功跳转的链接请务必写完整

模块/控制器/方法;其他所有的方法请务必按这种思想修改完成;

文章预告:下个文章将会写一写https的设置须知以及可能有的一些小坑;

展开
收起

php语法检查的方法有哪些?(代码示例)

php中语法检查是非常有必要的,如果不检查语法,则在发生错误时无法正常工作,如果同时执行语法检查,则可能不会发生该错误,本篇文章我们就来看一看php语法检查的方法。

我们可以使用lint检查

用lint静态检查。

静态是一种只检查语法描述方法而不执行程序的方法。

此时使用lint命令。

※php_check_syntax这个语法检查函数已经被废止,所以不能使用。

然后准备实际出现错误的php文件。

lint_test.php

<?phpecho "error"

它只是一个在屏幕上显示error的代码。

将lint_test.php移动到某个目录并发出以下命令。

php -l lint_test.php

执行结果

PHP Parse error: syntax error, unexpected end of file, expecting ',' or ';' in lint_test.php on line 2 Parse error: syntax error, unexpected end of file, expecting ',' or ';' in lint_test.php on line 2Errors parsing lint_test.php

syntax error=输出语法错误指示。

它还返回错误行数为line 2。

因为有unexpected end of file,是第2行没有“;”是原因。

那么,修改lint_test.php,再次执行lint命令。

<?phpecho "error";

执行结果为:

No syntax errors detected in lint_test.php

显示没有语法错误。

使用xdebug动态检查语法错误

首先,启用xdebug。

①从下面的官方站点下载xdebug,并记下下载的.dll文件所在的本地环境的路径。

https://xdebug.org/download.php

② 将以下内容添加到php.ini中。

zend_extension = ①中记录的路径

②重启Web服务器(Apache等)

这样就完成了设置。

使用xdebug检查错误

我们运行上述使用的lint_test.php。

lint_test.php

<?phpecho "error"

有一个错误,因为最后没有分号。

内容与执行lint时的内容相同,但附加了一些装饰以便于查看。

与lint的最大区别在于执行代码后出现的错误,因此可以说由于动态检查而出现错误。

展开
收起

PHP中“|”和“||”的简单比较

在PHP中“|”和“||”都是OR(或)运算符,那么它们之间有什么区别?下面本篇文章就来带大家认识一下运算符“|”和“||”,对它们进行简单比较,了解它们之间的区别。

运算符“|”

它是一个按位OR运算符,二元运算符;它对变量的位进行操作。如果有两个变量a,b,进行$a | $b;则是将把 $a 和 $b 中任何一个为 1 的位设为 1。

示例:

$a = 3; $b = 10; echo $a | $b; ?>

输出:

说明:

在上面的示例中,给定两个值,a = 3和b = 10;然后将这两个数字转换为二进制数,即a = 0011和b = 1010;最后应用OR(|)运算并计算$a | $b的值。

运算符“||”

这是一个逻辑OR运算符,布尔运算符;它对变量的布尔值进行操作。如果其中任何一个变量的布尔值为true,则$a || $b的值为1。

示例:

$a = 3; $b = 10; echo $a||$b; echo ''; if($a = 3 || $b = 0) echo '1'; else echo '0'; ?>

输出:

说明:

在上面的示例中,给定两个值,a = 3和b =10;因此变量a和变量b的布尔值都为true,则$a||$b的值为1;在if语句中,检查其中一个条件是否为真,因为变量a值被设置为3,布尔为true,因此执行“$a = 3 || $b = 0”的值为1。

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

展开
收起