关于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字符串的一道面试题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

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

Namo Webeditor5.5一看就懂.

Namo Webeditor5.5一看就懂.

吳聲毅 / 金禾資訊 / 20040214 / NT$ 169

一看就懂系列書全以初學者的角度切入,全書以STEP BY STEP方式撰寫,並以豐富的圖片搭配教學,在最後更加上日常生活實例運用講解,一路學來一氣呵成。為了增進學習的效率更採用高級紙品全彩印刷,這麼好的書,您還在等什麼,一看就懂系列書保證是您最佳入門學習好伙伴。 本書特色: 1、一看就懂:Step by Step操作詳盡說明、讓您一看就懂 2、精選範例:精彩實務範例生動活......一起来看看 《Namo Webeditor5.5一看就懂.》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具