
正文
php字符串底层数据结构 php 字符串 数组
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
什么是PHP?
PHP是超文本预处理器,是一种通用开源脚本语言。
PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
优点:
1、流行,容易上手
PHP是目前最流行的编程语言,这毋庸置疑。它驱动全球超过2亿多个网站,有全球超过81.7%的公共网站在服务器端采用PHP。PHP常用的数据结构都内置了,使用起来方便简单,也一点都不复杂,表达能力相当灵活。
2、开发职位很多
在服务器端的网站编程中PHP会更容易帮助你找到工作。很多互联网相关企业都在使用PHP开发框架,所以可以说市场对PHP的开发程序员的需求还是比较大的。
3、仍然在不断发展
PHP在不断兼容着类似closures和命名空间等技术,同时兼顾性能和当下流行的框架。版本是7之后,一直在提供更高性能的应用。
4、可植入性强
PHP 语言在补丁漏洞升级过程中,核心部分植入简单易行,且速度快。
5、拓展性强
PHP 语言在数据库应用过程中,可以从数据库调取各类数据,执行效率高。
扩展资料:
缺点
1、PHP的解释运行机制
在 PHP 中,所有的变量都是页面级的,无论是全局变量, 还是类的静态成员,都会在页面执行完毕后被清空。
2、设计缺陷
缺少关注PHP被称作是不透明的语言,因为没有堆栈追踪,各种脆弱的输入。没有一个明确的设计哲学。早期的PHP受到Perl的影响,带有out参数的标准库又是有C语言引入,面向对象的部分又是从 C++和Java学来的。
3、对递归的不良支持
PHP并不擅长递归。它能容忍的递归函数的数量限制和其他语言比起来明显少。
参考资料来源:百度百科—PHP
相关问答
Q1: php中字符串是连续的字符序列由什么组成?
首先php字符串底层数据结构,这是编程语言的概念。zhidao
0个或者多个字符串
所谓的0个就是空字符串
比如(php字符串底层数据结构我学的phpphp字符串底层数据结构,用php的写法)
$str='';//这个是空字符串,也就用引号引起来
$str=' ';//但是这不是,因为有空专格
如果是强属类型语言php字符串底层数据结构:
str $str;//定义一个字符串,但是我没有赋值,他就是一个空字符串变量。
Q2: PHP的数据类型有哪些?每种数据类型适用于哪些应用场合?
借用“短发人”的数据,手工完善一下。
boolean (布尔型) 一般用于判断,true或false。比如是否检测,是否完成,是否毕业等。
integer (整型)一般用于年龄,数量等没有小数点的计算。比如1 2 33 -9等。
float (浮点型, 也称作 double) 一般用于金钱,面积、体积等科学,含小数点的计算。比如3.1415926585897932
string (字符串)一般用于人名,物品等常规字符串。比如“张三”“桌子”“我来了”
array (数组)一般用于复杂数据处理,可以多维数据结构,可以放布尔、整型、浮点、字符、数组等。
object (对象) 一般用于面向对象,里面包含方法和变量。
Q3: PHP中字符串是不是字符的数组
在PHP里,字符串可以当作数组来使用。
以下是php官方使用手册中的相关说明:
字符串中的字符可以通过一个以0为开始的,用类似数组结构中的方括号包含对应的数字来查找和修改,比如 $str[5], 可以把 字符串想像数组 。
函数 substr() 和 substr_replace()可以用来实现多于一个字符的情况。
建议:
字符串为了同样的目的也可以用花括号,比如 $str{5},但是, 在PHP 5.3.0中不推荐使用这种格式,应该用方括号,就像 $str[5]。
Q4: php中字符串怎么又可以当作数组了?
一句话解释就是“PHP中下标符号可应用于数组php字符串底层数据结构,对象和字符串”
Q5: PHP变量的底层实现
我们解压PHP的源码包, 看到如下的目录
其中,
最核心的---Zend目录, 这是zend虚拟的实现. 包括栈,数据类型,编译器等,都在这实现.
最主要的main --PHP的一些内建函数,最主要函数都在这里放着.
最大的一个目录ext -- PHP的扩展.
PHP的大部分功能,都是以extenstion形式来完成的.
如果你开发了一个扩展,也放在ext目录下.
Zend对变量的表示:
答: zend实现了 zval结构体
{
value: [联合体] ,联合体的内容可能是C语言中的long,double,hashtable...
type:变量类型 , IS_NULL,IS_BOOL,IS_STRING...... IS_RESOURCE
refcount_gc
is_ref_gc
}
如:
$a = 3;
{
value : [long lval = 3]
type: IS_LONG
}
$a = 3.5
{
value: [double dval = 3.5]
type:IS_DOUBLE
疑问:
PHP中有8种数据类型,为什么zval-value 联合体中,只有5种?
答:
1: NULL,直接 zval-type = IS_NULL,就可以表示,不必设置 value的值.
2: BOOL型 , zval-type = IS_BOOL, 再设置 zval.value.lval = 1/0;
3: Resourc型 ,资源型 往往是服务器上打开的一个接口,如果 文件读取接口.
zval-type = IS_RESOURCE, zval-tyoe.lval =服务器上打开的接口的编号
发现:
PHP中,字符串类型,长度是已经缓存的,调用strlen时,系统可以直接返回其长度,不必计算.
php字符串底层数据结构的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php 字符串 数组、php字符串底层数据结构的信息别忘了在本站进行查找喔。






