内容简介:我们来看一段简单的代码:认真思索下,上面的代码会输出什么?如果你已经有答案了,那么就可以关闭这遍文章了,否则咱们一步一步的来看看最终会输出什么。在开始做题前,我们先来想想php中存在的变量类型:
我们来看一段简单的代码:
<?php $str = 'php'; $str['name'] = array('dogstart'); var_dump($str); 复制代码
认真思索下,上面的代码会输出什么?如果你已经有答案了,那么就可以关闭这遍文章了,否则咱们一步一步的来看看最终会输出什么。
基础回顾
在开始做题前,我们先来想想 php 中存在的变量类型:
- Boolean 布尔类型
- Integer 整型
- Float 浮点型
- String 字符串
- Array 数组
- Object 对象
- Resource 资源类型
- NULL
- Callback / Callable类型
参考文档:PHP类型
在PHP中string的实现方式是一个由字节组成的数组再加上一个整数指明缓冲区长度(注意,PHP是不能改变原字符串长度的)。
我们接着来看我们的题目,第一行代码很正常,关键的部分是在第二行:
$str['name'] = array('dogstart'); 复制代码
我们先看等号左边的代码,既然PHP的字符串是由数组组成的,我们知道PHP中数组的key可以是integer和string,但是在字符串中,我们只能通过integer 下标来访问每个字符,所以这个地方的'name'最终会被转换成数字:
intval('name'); 复制代码
在PHP文档中定义了,字符串转为数字时,字符串的开始部分决定了转换后的值。如果该字符串以合法的数值开始,则使用该数值,否则为0。
所以上面的代码的最终结果为0,利用数学中的代入法,第二行的代码就变成了:
$str[0] = array('dogstar'); 复制代码
我们接下来再看看第二行右边的代码,由于字符串中只能存在字符串,所以右边的代码会被转换成字符串:
strval(array('dogstar')); 复制代码
转换结果为'Array',这个时候第二行代码就成了:
$str[0] = 'Array'; 复制代码
由于字符串长度是固定的,所以这个地方只能存放一个字符,所以'Array'中的字符赋值到$str[0]中只会保留第一个字符,其余的都将被抛弃。所以我们的代码就变成了:
<?php $str = 'php'; $str[0] = 'A'; var_dump($str); 复制代码
这个时候就可以一眼看出最终的输出结果为'Ahp'。
以上所述就是小编给大家介绍的《关于PHP字符串的一道面试题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 查找一个字符串中最长不含重复字符的子字符串,计算该最长子字符串的长度
- 字符串、字符处理总结
- 高频算法面试题(字符串)leetcode 387. 字符串中的第一个唯一字符
- php删除字符串最后一个字符
- (三)C语言之字符串与字符串函数
- 算法笔记字符串处理问题H:编排字符串(2064)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。