关于PHP字符串的一道面试题

栏目: PHP · 发布时间: 7年前

内容简介:我们来看一段简单的代码:认真思索下,上面的代码会输出什么?如果你已经有答案了,那么就可以关闭这遍文章了,否则咱们一步一步的来看看最终会输出什么。在开始做题前,我们先来想想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字符串的一道面试题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

乔布斯离开了,马斯克来了

乔布斯离开了,马斯克来了

[日]竹内一正 / 干太阳 / 中信出版社 / 2015-11

在电动汽车的创新上,特斯拉抓住了一个群体的独特需求,外形很酷,不烧油,智能化控制。所有的颠覆式创新都不是敲锣打鼓来的,而是隐藏在一片噪声里,马斯克给我们带来的特斯拉虽然不尽完美,但他做产品的思维和执着于未来的勇气,值得学习。埃隆•马斯克创办公司也不是为了赚钱,而是为了拯救人类和地球,电动汽车、太阳能发电、宇宙火箭,不管是哪一项都足以令一个国家付出巨大的代价去研究开发,但埃隆•马斯克却一个人在做这些......一起来看看 《乔布斯离开了,马斯克来了》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具