我们来看一段简单的代码:

$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]中只会保留第一个字符,其余的都将被抛弃。所以我们的代码就变成了:

$str = 'php';

$str[0] = 'A';

var_dump($str);

这个时候就可以一眼看出最终的输出结果为'Ahp'。

php面试php数组变ahp,关于PHP字符串的一道面试题相关推荐

  1. php面试php数组变ahp,php实现把数组按指定的个数分隔

    php实现把数组按指定的个数分隔 复制代码 代码如下: /** * * 把数组按指定的个数分隔 * @param array $array 要分割的数组 * @param int $groupNum ...

  2. Python之数据分析(Numpy的数组切片、数组变维、组合与拆分)

    文章目录 一.Numpy的切片 二.数组变维 三.组合与拆分 一.Numpy的切片 1.格式 数组[起始:终止:步长] 2.缺省值 缺省起始:步长为正,首:步长为负,尾 缺省终止:步长为正,尾后:步长 ...

  3. 面试突击 | 彻底搞定 JVM 这几道高频面试题

    前言 Java 相比 C/C++ 最显著的特点便是引入了自动垃圾回收 (下文统一用 GC 指代自动垃圾回收),它解决了 C/C++ 最令人头疼的内存管理问题,让程序员专注于程序本身,不用关心内存回收这 ...

  4. 从简历被拒,到拿下头条面试,我花了一年的时间(经验分享+面试题)

    作者:无精疯 原文链接:https://www.zhihu.com/people/wu-jin-feng-41 前言 我是二本院校非科班的,从简历被拒,到拿下头条面试,我花了一年的时间. 一.印象中的 ...

  5. 5.2 IO流(File类,Propertis配置文件,其他类(打印流,序列流,操作对象的流(序列化接口),随机访问文件的流,管道流,操作基本数据的流,操作数组的流,操作字符串的流),编码表)

    1.File类 IO流的流对象只能操作设备上的数据.File类:1.用来将文件或者文件夹(也称目录)封装成对象. 2.方便对文件和文件夹的属性信息进行操作.(操作文件夹,文件的属性(创建时间,修改时间 ...

  6. 前端面试:手写代码JS实现字符串反转

    前端萌新面试:手写代码JS实现字符串反转 前言 因为做前年小红书的前端校招面试题,发现出现好几道关于字符串对象和数组对象的题目,说难不难,但突然要写的话一时想不起来,这不想着做个小总结. 首先明白字符 ...

  7. php 字符串转数组 提取中文 提取英文 字符串类型

    获取字符串类型 /*** 判断中英文*/ public function checkStr($str){$output = ''; ///\<[\s\S]*\>/i$a = preg_ma ...

  8. 字符指针,字符数组,双引号的字符串的区别与联系

    2019独角兽企业重金招聘Python工程师标准>>> 作者 :  陈宗权 先说说双引号的字符串,比如"chenzongquan",它是由里面咱们看到的一系列字符 ...

  9. php将字符串转成json字符串数组,php数组怎么转成json字符串

    在PHP中,可以使用json_encode()函数来将数组转化为json字符串,语法"json_encode(数组)".json_encode()函数可以对变量进行JSON编码,将 ...

最新文章

  1. poj 1873 枚举+凸包
  2. exec 执行结果_php执行系统外部命令的4种方法
  3. Python数值计算:一 使用Pylab绘图(1)
  4. 选择日期保存报错Invalid JSON input: Cannot deserialize value of type `java.util.Date` from String......
  5. onedrive电脑手机不同步_免费的手机电脑同步便签软件怎么找?求帮忙推荐
  6. Springboot项目部署到外部Tomcat
  7. matlab拟合函数导出,excel里曲线拟合的公式怎么导出?()
  8. 实习周记---20180527
  9. httd及其ab测试工具
  10. 最快倾斜摄影三维建模-台式、便携、多机集群配置推荐
  11. Lattice系列内存时序
  12. 惠普HP LaserJet Pro M104a 打印机驱动
  13. Jboot框架的使用
  14. gxworks2使用指令手册_GX Works2操作手册(智能功能功能模块操作篇):三菱 GX 三菱 GX Works2操作手册(智能功能功能模块操作篇)...
  15. 2021年度软件企业 100 强榜单(附全名单)看看有你家公司没
  16. logcat日志文件分析
  17. Microsoft Office无法验证此应用程序的许可证怎么解决
  18. 泛微齐业成,一文告诉你如何实现全程数字化的预算管理
  19. 有了这几个webp转换工具,快速完成图片转换工作
  20. docker 文件操作

热门文章

  1. python现有两个磁盘文件a和b_有两个磁盘文件A和B,各存放一行字母,今要求把这两个文件中的信息合并,输出到一个新文件C中。...
  2. 计算机护理职称考试报名时间2015,护理职称考试怎么报名?
  3. ygo游戏王卡组_ACG大科普(7)游戏王
  4. 中国石油计算机文化基础答案,中国石油大学17年秋《计算机文化基础》第二次在线作业答案...
  5. linux命令之history命令
  6. 生活之难:生活到底难在哪里
  7. rsync服务扩展应用
  8. SpringMVC注解HelloWorld
  9. 【HM】第2课:JavaScript基础
  10. 重装vcenter后恢复原来制作的模板!