我想说:“Php的强大不言而喻”,这里会应该会有人说这个语言最强大,那个语言最好,小编声明本栏目不比较哪个语言好与不好,本栏目只针对php语言的本性,以及跟我一样在学习php的朋友一起分享我的经验之谈。小编不是php高手,小编只是php的忠实粉丝,投机的话可以跟小编一起聊聊php,一起分享大家的一些经验。

昨天有人回复我说何为弱类型,强调了三遍,我也没解释,今天就在这篇文章解释一下何为弱类型,弱类型的好处以及弊端。小编之所以认为php很强大是因为php提供了很多独有的特性工开发者使用,其中一个就是php弱类型机制。

先看一个例子,弱类型可以做以下这些操作:

例子1:<?Php

$iruohong = 1; //整数型

$iruohong = array(); //数组型

$iruohong = “iruohong.com”; //字符串型

?>

有过一点编程经验的朋友通过这段代码就有点弱类型的概念了,这就是php的弱类型机制的其中一个表现,php内核的开发者是想通过这种不需要声明的体系提高开发者的开发效率。

然而这种机制会带来一些麻烦,比如下面的一些比较会给你开发者带来一些麻烦,如果开发者没注意。

例子2:<?Php

$a = null; $b = false;

If($a == $b){

echo “a和b相等!”;

}else{

echo “a和b不相等!”;

}

?><?Php

$a = ''; $b = 0; //同样为真

If($a == $b){

echo “a和b相等!”;

}else{

echo “a和b不相等!”;

}

?>

测试一下你会发现两段代码都会输出 a和b相等! ,新手朋友就会很诧异了怎么会相等呢?小编也吃过这方面的亏,原因是在你比较的时候php不会严格检验传入的变量类型,将变量自由的转换类型。因为无论变量是0 null ‘’还是false,比较的时候php都默认为空,整数值的话都是0,所以就相等了。如果你非要比较出几个值不一样的话你就用“===”,三个等号代表完全相等,包括类型和值都相等。这是一些新手会犯的一些错误。

说了那么多弱类型的东西,下面我们比较一下强类型和弱类型的区别。

(1)不管是强类型还是弱类型,变量都有两个属性:类型和值;也就是说,弱类型的变量同样有类型。

不管是哪一种编程语言,其中使用的变量,都既有类型,又有值。强类型的变量类型,必须在源代码中明确定义,称之为“变量声明”,弱类型的变量类型则是无需声明的,由解释器解释。但是,这并不意味着,弱类型的变量就没有类型这一概念了,举例来说,PHP的gettype就是返回该变量“当前”的类型。

(2)错误认识:【有人认为强类型的变量类型是不能改变的,弱类型变量是随需改变的,强类型的变量一经声明,就只能存储这种类型的值,其他的值则必须通过转换之后才能付给该变量,有编译器自动理解的转换,也有由程序员明确指定的强制转换。弱类型的变量类型则是随着需要不断转换。】黑括号里面的是错误认识,很多人都是这么错误认识的,其实不管是前类型的变量类型还是弱类型的变量类型都是不能改变的。下面的例子就说明了一切,给$b赋值的时候$a的值是变化的,但是$a的类型是没有变化的,下面例子请自行测试

例子3:<?php

$a = 25;

echo $a.'|'.gettype($a).'
';

$b = $a.'good';

echo $b.'|'.gettype($b).'
';

echo $a.'|'.gettype($a).'
';

?>

输出结果是:25|integer25good|string25|integer

(3)强类型语言的强制转换并没有改变变量类型

强类型语言有个“强制转换”,这改变的是变量的值的类型,以便进行赋值,而没有改变变量的类型。变量的类型是不允许改变的。

php和其他语言的区别,为什么说php是弱类型好学,跟其他语言的区别相关推荐

  1. java的强类型语言与JavaScript(js)的弱类型语言

    强类型 java语言是一种强类型语言,强类型怎么理解? java语言存在编译阶段,假设有代码:int i; 那么在Java中有一个特点是:java程序编译阶段就已经确定了 i变量的数据类型,该i变量的 ...

  2. javascript php 区别,PHP 或者 JavaScript 这些弱类型 的|| 和 | 的区别, 附代码;

    下面是实验代码:用php 写的,JavaScript应该也差不多: 我发现,php 和 JavaScript 差多了! 我附加 运行结果 和 代码: 区别 | || or \& \& ...

  3. java 强类型 弱类型_强类型,弱类型,静态类型,动态类型的区别

    强.弱类型 强类型strongly typed: 如果一种语言的所有程序都是well behaved--即不可能出现forbidden behaviors,则该语言为strongly typed. 弱 ...

  4. Python语言特性和优缺点及什么是鸭子类型?

    1)Python语言特性? Python是静态还是动态类型?是强类型还是弱类型?         Python是动态强类型语言(不少人误以为是弱类型) 动态还是静态指的是编译期还是运行期确定类型 强类 ...

  5. python程序设计语言是什么类型的语言-Python 是弱类型的语言 强类型和弱类型的语言区别...

    Python 是弱类型的语言 在强类型的编程语言中,定义变量时要指明变量的类型,而且赋值的数据也必须是相同类型的,C语言.C++.Java 是强类型语言的代表. 下面我们以 C++ 为例来演示强类型语 ...

  6. 机器人编程与python语言的区别_一分钟看懂“机器人编程”和“少儿编程”的区别!...

    随着编程学习全球化的趋势,国内编程学习热潮日盛,越来越多的家长开始让孩子接触学习编程. 然而在挑选学习课程的过程中,机器人编程和少儿编程是最让家长头疼的问题之一. 因为两者的名称都有"编程& ...

  7. java和c语言的区别_都说C语言不会过时,但你是否还需要掌握其他语言?

    01为什么C语言不会过时 评价任何一门编程语言,都是招人骂的.永远是这样.就像是春寒料峭的季节, 街上穿棉袄和穿单衣的擦肩而过,双方一定是同时在心里出现了两个字:"傻B!"这个在心 ...

  8. 概念区别 【编译型语言与解释型语言、动态类型语言与静态类型语言、强类型语言与弱类型语言】

    概念区别 [编译型语言与解释型语言.动态类型语言与静态类型语言.强类型语言与弱类型语言] 文章目录 一.编译型语言与解释型语言 二.动态类型语言与静态类型语言 三.强类型语言与弱类型语言 总结 一.编 ...

  9. Java 面试题 —— 强类型语言和弱类型语言的区别

    Java 面试题 -- 强类型语言和弱类型语言的区别 ​  强类型语言,也称为强类型定义语言,是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用. ​  如:Jav ...

最新文章

  1. 可以打游戏的计算机,还在用笔记本玩游戏?台式机才能给你极致享受
  2. 如何通过标签体系,打造精细化运营?
  3. P4284-[SHOI2014]概率充电器【树形dp,换根法,数学期望】
  4. 动态加载js文件以支持跨域脚本
  5. 2021计算机专业考408的学校,2021考研:计算机考研408是什么?统考学校有哪些?...
  6. 【干货】打造优秀B端产品需求分析流程要点
  7. linux的三大服务器,Linux三大重要事件
  8. python课程价格-少儿编程培训机构哪家好,儿童编程价格多少钱?家长知多少
  9. SpringBoot之maven包管理
  10. json处理为字符串,主要函数,dumps和loads
  11. html实现输入框扫码录入,使用这个工具,可以让你一行代码生成登录表单
  12. 获取深户股市列表api_网易163 财经股票接口
  13. 【第三课】Arcgis软件详细介绍
  14. 中国学生的最大噩梦,都来源于这个男人
  15. 用js处理图片加载错误时加载默认图片的方法
  16. DiyTomcat系列一、序言及项目架构
  17. iOS手势-UIGestureRecognizer
  18. IntelliJ IDEA 项目相关的几个重要概念介绍
  19. 维达东南亚新总部正式投入运营;西门子能源在粤港澳大湾区持续深化务实合作 | 美通企业日报...
  20. bat 脚本修改IE浏览器代理服务器

热门文章

  1. matlab 格式化输出
  2. 机器学习基础(四十六)—— 遗传算法(GA)
  3. 用到f6的快捷键_让你的办公效率成倍翻得快捷键。
  4. python版贴吧_【和我一起学Python吧】Python3.0与2.X版本的区别
  5. 2018年python工作好找吗-2018年最新数据:python、大数据、人工智能从业者薪资表...
  6. python适合自学编程吗-对于0基础的人,直接学 Python 编程合适吗?
  7. python用什么来写模块-用Python编写模块有何技巧?
  8. python 菜鸟-Python 元组
  9. python开发自动化创建一个任务下发到手机_python自动化开发问题集
  10. JavaScript面向对象之Function类型