PHP那些琐碎的知识点(整理)

PHP不会检查单引号 '' 字符串中变量内插或(几乎)任何转义序列,所以采用单引号这种方式来定义字符串相当简单快捷。但是,双引号 "" 则不然,php会检查字符串中的变量或者转义序列,并输出变量和转义序列的值。

$a = "123";
print '$a\t';
print '$a';

输出:

$a\t$a

如果是双引号 "" :

$a = "123";
print "$a\t";
print "$a";

输出:

注意:

单引号 '' 可以解释 '\ 和 \\ 这俩转义字符,就这俩!

能使单引号字符尽量使用单引号,单引号的效率比双引号要高(因为双引号要先遍历一遍,判断里面有没有变量,然后再进行操作,而单引号则不需要判断)。

单引号 '' 和双引号 "" 都可以用来

echo 和 print的区别:

这两都是语句,不是函数;这俩语句的作用都是输出字符串。但是:

echo 可以传入多个参数。而 print 只有一个:

echo "123", "123";//输出123123
print "123", "123";//报错,只可以写一个参数 print "123";

echo 无返回值,而 print 返回值恒为1;

注意:

PHP的八中数据类型,除了数组 array 和没有实现 __toString 魔法函数的对象都可以用echo或者print来输出,并且 boolean 类型的用echo或者print来输出,只会显示1或者不显示。

echo true; //输出1
echo false; //什么都不输出

数字和字符串相加:

PHP会自动完成字符串和数字的转换,这样有时候会带来好处,有时候却很让人苦恼。

echo 1 + "2";//输出3
echo 1 + "a";//输出1

$a = 1 + "A"; 试问变量 $a 的数据类型?

if(is_numeric($a)){
  echo "是整型";
}
else{
  echo "是其他类型";
}
//最后输出:是整型

随机数生成函数 rand() 和 mt_rand() 的区别:

rand() 和 mt_rand() 用法完全一致,它俩分别有两种用法:

//第一种用法:
rand();//产生的随机数为0到getrandmax()之间
mt_rand();//产生的随机数为0到mt_getrandmax()之间
//第二种用法:
rand($min, $max);//产生从$min到$max之间的随机数
mt_rand($min, $max);//产生从$min到$max之间的随机数

区别: mt_rand() 是更好地随机数生成器,因为它跟 rand() 相比播下了一个更好地随机数种子;而且性能上比 rand() 快4倍, mt_getrandmax() 所表示的数值范围也更大

BCMath库和GMP库的区别:

BCMath库很容易使用。将数字作为字符串传入函数,它会将数字的和(或差,积等)作为字符串返回。不过,使用BCMath时,对数字所能完成的操作仅限于基本算术运算。

$sum = bcadd("12345678", "87654321");//$sum = "99999999"

GMP函数可以接受整数或者字符串作为参数,不过它们更乐意将数字作为资源来传递,这实际上是指向数字内部表示的指针。所以与BCMath函数不同,BCMath函数返回字符串,而GMP只返回资源。可以将这个资源作为数字传递到任何GMP函数。

$four = gmp_add(2, 2);//可以传入整数
$eight = gmp_add('4', '4');//或字符串
$twelve = gmp_add($four, $eight);//或GMP资源

GMP唯一的缺点是,想要用非GMP函数查看或使用资源时,需要使用 gmp_strval() 或 gmp_intval() 显示地进行转换。

注意

BCMath与PHP捆绑发行,若GMP不与PHP捆绑,需要另外下载和安装。完成高精度数学运算的另一种选择是使用PECL的 big_int 库。

include和require的区别:

include() 、 require() 语句包含并运行指定文件。这两结构在包含文件上完全一样,唯一的区别是对于错误的处理:

•require() 语句在遇到包含文件不存在,或是出错的时候,就停止即行,并报错。
•include() 在遇到包含文件不存在的时候,只生成警告,并且脚本会继续。

换句话说,如果你想在丢失文件时停止处理页面,那就别犹豫了,用 require() 吧。 include() 就不是这样,脚本会继续运行。

include_once和require_once

•include_once() 和 require_once() 一样,应该用于在脚本执行期间同一个文件有可能被包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。这就是 include_once() 和 require_once() 与 include() 和 require() 的主要区别。
•require_once() 、 include_once() 运行效率要比 require() 和 include() 低,因为前两者需要判断寻找引入的文件是否已经存在。`

PHP合并数组 + 和 array_merge() 的区别

同为数组合并,但是还是有差别的:

•键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖)

$a = array('a','b');
$b = array('c', 'd');
$c = $a + $b;
var_dump($c);
//输出:
// array (size=2)
// 0 => string 'a' (length=1)
// 1 => string 'b' (length=1)
var_dump(array_merge($a, $b));
//输出:
//array (size=4)
// 0 => string 'a' (length=1)
// 1 => string 'b' (length=1)
// 2 => string 'c' (length=1)
// 3 => string 'd' (length=1)

•键名为字符时,+仍然把最先出现的键名的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值

$a = array('a' => 'a' ,'b' => 'b');
$b = array('a' => 'A', 'b' => 'B');
$c = $a + $b;
var_dump($c);
//输出:
//array (size=2)
//'a' => string 'a' (length=1)
//'b' => string 'b' (length=1)
var_dump(array_merge($a, $b));
//输出:
//array (size=2)
//'a' => string 'A' (length=1)
//'b' => string 'B' (length=1)

字符串常用函数

PHP提供了很多方便的字符串函数,常用的有:

•strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] ) 。返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。若为before_needle为 TRUE,strstr() 将返回 needle 在 haystack 中的位置之前的部分。
•substr( string $string , int $start [, int $length ] ) 。返回字符串 string 由 start 和 length 参数指定的子字符串。
•substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] ) 。substr_replace() 在字符串 string 的副本中将由 start 和可选的 length 参数限定的子字符串使用 replacement 进行替换。
•strrev ( string $string ) 。返回 string 反转后的字符串。
•str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) 。该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。subject为执行替换的数组或者字符串。也就是 haystack。如果 subject 是一个数组,替换操作将遍历整个 subject,返回值也将是一个数组。如果count被指定,它的值将被设置为替换发生的次数。
•strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) 。返回 needle 在 haystack 中首次出现的数字位置;如果提供了offset参数,搜索会从字符串该字符数的起始位置开始统计。 如果是负数,搜索会从字符串结尾指定字符数开始。
•ltrim() 、 rtrim() 、 trim() 。这仨都是删除字符串中的空白符。 ltrim() 删除字符串开头的空白字符; rtrim() 删除字符串末端的空白字符; trim() 去除字符串首尾处的空白字符。

以上是小编收集整理的关于PHP那些琐碎的知识点,希望对大家有所帮助!

(0)

相关推荐

  • cakephp常见知识点汇总

    本文实例总结了cakephp常见知识点.分享给大家供大家参考,具体如下: 1. 调用其他控制器的模板,重定向 方法一: 在此调用/views/tasks/tasks下的hello.ctp模板 $this -> viewPath = 'tasks'; $this -> render('hello'); 方法二(带参): $this->redirect(array('controller'=>'users','action'=>'welcome',urlencode($this-

  • PHP高手需要要掌握的知识点

    如果想进入大的企业进行底层开发的话必须对互联网各方面的技术原理了解的很清楚,例如apache实现原理.语言方面既然是php开发自然对 c/c++要求比较高.往往需要自己写php扩展.使用mysql自然想很多常见的,性能瓶颈要能有很好的解决方案.mysql 插件编写,apache模块编写.联系起来结合点还是要会c. 倘若是做中间层和前端工作则要求对css,javascript要求比较高.当然对web的一系列实现原理也是要非常熟悉的. 对新技术要比较敏感,才能证明你有很好的学习能力和使用能力. 努力

  • PHP中最容易忘记的一些知识点总结

    1.定义常量: 复制代码 代码如下: <?php //1    define("TAX_RATE",0.08); echo TAX_RATE;  //输出0.08 //2 (PHP 5.3)    const TAX_RATE2 =0.01; echo '--'.TAX_RATE2; //输出0.01?> 2.require 和require_once 区别: 前者遇到即包含文件,后者会判断是否已经包含过了,如果包含过了,则不再包含文件.一可以节省资源,二可以避免重复定义的

  • php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表

    复制代码 代码如下: <?php /* *打印乘法口绝表 */ echo "九灵九乘法口绝表<br><br><br>"; echo "<table>"; for($i=1;$i<=9;$i++){ echo "<tr>"; for($j=1;$j<=$i;$j++){ echo "<td>".$j."*".$i.&qu

  • php入门学习知识点一 PHP与MYSql连接与查询

    一.连接数据库 1. mysql_connect: 开启 MySQL 链接 mysql_connect('主机','用户名','密码') 2. mysql_select_db: 打开一个数据库 mysql_select_db('数据库名',$链接标识符) //链接标识符不填写则默认为上一次打开的连接 3. mysql_query("set names 'GBK'") 解决中文乱码问题; mysql_query("set names '编码(utf8或GBK)' ")

  • PHP类相关知识点实例总结

    本文实例总结了PHP类相关知识点.分享给大家供大家参考,具体如下: 最终类与最终方法 如果父类中的方法被声明为 final,则子类无法覆盖该方法.如果一个类被声明为 final,则不能被继承. final class a{} class a{ final public function A(){} } 抽象类与抽象方法 abstract class a { public abstract function func(); } class A extends a{ public function

  • PHP容易忘记的知识点分享

    1.定义常量: 复制代码 代码如下: <?php //1 define("TAX_RATE",0.08); echo TAX_RATE; //输出0.08 //2 (PHP 5.3) const TAX_RATE2 =0.01; echo '--'.TAX_RATE2; //输出0.01 ?> 2.require 和require_once 区别: 前者遇到即包含文件,后者会判断是否已经包含过了,如果包含过了,则不再包含文件.一可以节省资源,二可以避免重复定义的错误. 3.

  • php中关于mysqli和mysql区别的一些知识点分析

    一: PHP-MySQL 是 PHP 操作 MySQL 资料库最原始的 Extension ,PHP-MySQLi 的 i 代表 Improvement ,提更了相对进阶的功能,就 Extension 而言,本身也增加了安全性.而 PDO (PHP Data Object) 则是提供了一个 Abstraction Layer 来操作资料库,用讲的其实看不出来有有什麽差别,所以就直接看程式吧- 首先,先来看一段用 PHP-MySQL 写成的程式码,这类的范例常用在世界各地: 复制代码 代码如下:

  • PHP编程入门的基本语法知识点总结

    一.何为php PHP,即"PHP: Hypertext   Preprocessor",是一种被广泛应用的开源通用脚本语言,尤其适用于 Web 开发并可嵌入 HTML   中去.它的语法利用了 C.Java 和 Perl,易于学习.该语言的主要目标是允许 web 开发人员快速编写动态生成的 web   页面,但 PHP 的用途远不只于此. 简单来说,就是php是一种脚本语言,可以做很多事情.①服务器端脚本 ②命令行脚本 ③编写桌面程序 二.开始php (1)下载php解释器,其实wi

  • PHP那些琐碎的知识点(整理)

    PHP不会检查单引号 '' 字符串中变量内插或(几乎)任何转义序列,所以采用单引号这种方式来定义字符串相当简单快捷.但是,双引号 "" 则不然,php会检查字符串中的变量或者转义序列,并输出变量和转义序列的值. $a = "123"; print '$a\t'; print '$a'; 输出: $a\t$a 如果是双引号 "" : $a = "123"; print "$a\t"; print "

  • Webpack框架核心概念(知识点整理)

    webpack是什么 webpack是一个前端构建的打包工具(并不是什么库或框架), 它能把各种资源,例如JS(含JSX).coffee.css(含less/sass).图片等都作为模块来处理和使用. 1.基础知识点 1.1 webpack 是一个现代 JavaScript 应用程序的模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个

  • Vue面试题及Vue知识点整理

    看面试题,只是为了查漏补缺,看看自己那些方面还不懂.切记不要以为背了面试题,就万事大吉了,最好是理解背后的原理,这样面试的时候才能侃侃而谈.不然,稍微有水平的面试官一看就能看出,是否有真才实学还是刚好背中了这道面试题.(都是一些基础的vue面试题,大神不用浪费时间往下看) 一.对于MVVM的理解? MVVM 是 Model-View-ViewModel 的缩写.Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑.View 代表UI 组件,它负责将数据模型转化成UI 展现出来

  • ES6知识点整理之Proxy的应用实例详解

    本文实例讲述了ES6知识点整理之Proxy的应用.分享给大家供大家参考,具体如下: Proxy 用于修改对象某些操作的默认行为,可以对外界的访问进行过滤和改写,其概念类似于元编程. Proxy 让我们可以对任何对象的绝大部分行为进行监听和干涉,实现更多的自定义程序行为.在目标对象之前架设一层"拦截",外界对该对象的访问,都必须先通过这层拦截. 目前[兼容性]存在一定的问题,目前在chrome和ff浏览器中的非严格模式下可用,一些先进的技术即使在目前不能广泛应用,但随着时间的流逝,都将会

  • vue项目前端知识点整理【收藏】

    微信授权后还能通过浏览器返回键回到授权页 在导航守卫中可以在 next({}) 中设置 replace: true 来重定向到改路由,跟 router.replace() 相同 router.beforeEach((to, from, next) => { if (getToken()) { ... } else { // 储存进来的地址,供授权后跳回 setUrl(to.fullPath) next({ path: '/author', replace: true }) } }) 路由切换时页

  • ES6知识点整理之String字符串新增常用方法示例

    本文实例讲述了ES6知识点整理之String字符串新增常用方法.分享给大家供大家参考,具体如下: 字符串includes,startsWith,endsWith方法测试 普通的用法: <script> var str = 'Hello'; console.log(str.indexOf('o')); // 4 console.log(str.includes('e')); // true console.log(str.startsWith('H')); // true console.log

  • ES6知识点整理之函数数组参数的默认值及其解构应用示例

    本文实例讲述了ES6知识点整理之函数数组参数的默认值及其解构应用.分享给大家供大家参考,具体如下: 在ES6中, 函数的参数也可以使用解构赋值和默认值的设置,下面我们来看下 在ES6之前设置函数默认值的写法 function test(x,y) { x = x || 12; y = y || 22; console.log(x,y); } test(); // 12 22 test(1,2) // 1 2 在ES6中给函数参数赋默认值 function test(x=12, y=22) { co

  • ES6知识点整理之对象解构赋值应用示例

    本文实例讲述了ES6知识点整理之对象解构赋值应用.分享给大家供大家参考,具体如下: ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring), 在对象的解构赋值中有一些需要注意的事项 初识对象的解构 var {name} = { name:'Joh', age:10 }; console.log(name); // Joh 通过解构的形式取出对象中的属性值 对解构出的属性进行重命名 var {name} = { name:'Joh', age:1

  • ES6知识点整理之数组解构和字符串解构的应用示例

    本文实例讲述了ES6知识点整理之数组解构和字符串解构的应用.分享给大家供大家参考,具体如下: ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring), 而数组的解构赋值是从数组中提取值,按照对应位置,对变量赋值. ES6之前的赋值操作 var arr = [1,2,3]; var a = arr[0]; var b = arr[1]; var c = arr[2]; console.log(a,b,c); // 1 2 3 对一维数组的解构赋值

  • ES6知识点整理之模块化的应用详解

    本文实例讲述了ES6知识点整理之模块化的应用.分享给大家供大家参考,具体如下: 目前浏览器还不能完全支持模块化,需要引入很多编译环境,下面在nodejs中来模拟ES6中的模块化 nodejs中针对模块化演示的配置 环境的安装:$ npm install --save babel-cli babel-preset-node6 运行:$ ./node_modules/.bin/babel-node.js --presets node6 ./your_script.js 添加.babelrc文件, 编

随机推荐