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

$str = 'php';

$str[0] = 'A';

var_dump($str);

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7 libjpeg使用

一、交叉编译libjepg编译 tar xzf libjpeg-turbo-1.2.1.tar.gz ./configure –help ./configure --prefix/work/project/first_project/13libjepg/libjpeg-turbo-1.2.1/tmp/ --hostarm-linux make make install 二、交叉编译jepg2rgb.c arm-linux-gcc -o jpg2rgb jpg2rgb.c …

oracle快速排序法,经典算法系列之快速排序算法

快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快&am…

echaer 地图_ECharts地图系列

series[i]-map用于控制 ECharts 中的地图。地图主要用于地理区域数据的可视化,配合 visualMap 组件用于展示不同区域的人口分布密度等数据。多个地图类型相同的系列会在同一地图上显示,这时候使用第一个系列的配置项作为地图绘制的配置。Tip: 在 ECharts…

内核电源管理器已启动关机转换_电气器件-菲尼克斯UPS(不间断电源)使用

在有些项目中存在部分器件不允许突然失电的情况,否则会导致器件损坏或者生产产品损坏等问题。为解决该问题一般使用UPS(不间断电源)来解决该问题。下面简单介绍菲尼克斯UPS的使用。某项目中使用工控机进行设备参数的管理、编辑操作,系统为Win7&#xff0…

关于JAVA中的synchronized,一段不错的解释...

转载于:https://www.cnblogs.com/tabchanj/p/5387832.html

oracle11优点,争先体味Oracle 11g的新特点

争先体味Oracle 11g的新特点跟着这几天Oracle OpenWorld大会的举行,Oracle11g的新特征越来越多的被展现出来。以前,我曾经引见过Oracle11g将可能在10月份的这个大会上推出,当初至于Alpha版的信息已经可以见到,现时出现的已经是Bet…

l298n电机驱动模块使用方法_SPDK virtio 驱动模块介绍及使用

作者简介闫亮 Intel高级软件工程师专注于开源存储SPDK的测试和优化简介CONTENTSSPDK virtio模块介绍SPDK virtio 用户模式使用示例SPDK virtio PCI模式使用示例总结第一章SPDK virtio模块介绍众所周知,Virtio协议定义了两个块设备驱动,virtio-blk和vi…

【rman】list archivelog all与list backup of archivelog all

list archivelog all 是列出控制文件中记录的未被rman delete 命令删除的手工删除的日志文件,如果手工删除之后使用list命令对应的日志文件的status为标记为X!模拟删除日志yangdb_1_192_762800109.log oraclerac3:/opt/oracle/yangdb_arch>mv yangdb_…

ase支持 urp不_urp管线的自学hlsl之路 第一篇 序言

入坑unity学习已经有一年半了,shader很早就在用连连看学习和使用(lwrp hdrp的shadergraph和build in的ase)。但是随着对于画质和效果的追求和提高,使用手写shader已经变得非常有必要了。疫情期间正好打下了C#的编程基础,两个月前我开始学习CG…

oracle变量名,Oracle中的替换变量,变量名,变量名

替换变量(仅用于SQL *Plus或者用于原理和SQL *Plus相同的开发工具):临时存储值利用它可以达到创建通用脚本的目的利用它可以达到和用户交互,故在SQL *Plus中又称交互式命令替换变量的格式式在变量名称前加一个&,以便在运行SQL命令时提示用…

2 使用_索尼黑卡RX100M6的使用指南2

索尼黑卡RX100M6的使用指南2先说刚拿到黑卡怎么上手吧,每次就谈3个点。NO.1模式转盘如下图模式转盘HFR:拍摄慢动作(视频)的档位,黑卡最高拍摄40倍慢动作视频;SCN:情景模式,就是小白不知道什么题材设置什么参…

iOS中的UIScrollView(滑动视图)

2019独角兽企业重金招聘Python工程师标准>>> UIScrollView 可以滑动的视图 #import "ViewController.h"interface ViewController (){UIImageView *imgV;}endimplementation ViewController- (void)viewDidLoad {[super viewDidLoad];//新加一个UIScroll…

linux文件什么权限比较安全,linux文件安全与权限

文件文件类型创建文件改变权限位符号模式r w x:文件属主权限 这是前面三位r- x:同组用户权限 这是中间三位r- x:其他用户权限 这是最后三位chmod命令的一般格式为:chmod [who] operator [permission] filenamewho的含义是&#xf…

系统新模块增加需要哪些步骤_在1769系统里使用MVI69MCM的有福了

如果在AB的1769系统里需要走Modbus RTU通讯的话就需要Prosoft的1769系列的机架式产品,之前的项目用的是老型号MVI69-MCM,那么新项目就会用MVI69E-MBS这个型号。那么模块的通讯拓扑图如下所示:模块往下可以连接仪表,变频器&#xf…

大脑使用书全6册有用吗_常锻炼“人体第二大脑”的孩子,不仅智商高,记忆力也很强...

常锻炼“人体第二大脑”的孩子,不仅智商高,记忆力也很强父母都希望自己的孩子聪明、智商高,很多家长也会将精力投入到孩子大脑潜能开发中。也有一些家长会说,聪不聪明那是天生的,一些家庭明明对于孩子大脑开发的事情不…

Apache多站点配置详解

2019独角兽企业重金招聘Python工程师标准>>> 本人第一篇技术博客,主要是把我自己的笔记做一个整理,并对之前学习做一个回顾和总结,也分享给大家,共同提高,好了,闲话少说,进入正题吧。…

linux字符设备驱动在哪里设置,从点一个灯开始学写Linux字符设备驱动!

原标题:从点一个灯开始学写Linux字符设备驱动![导读] 前一篇文章,介绍了如何将一个hello word模块编译进内核或者编译为动态加载内核模块,本篇来介绍一下如何利用Linux驱动模型来完成一个LED灯设备驱动。点一个灯有什么好谈呢&…

ipv6 ospf配置方法_【思唯网络学院】网络故障大全及处理原理和方法

第一章 故障处理方法一、网络的复杂性   一般网络包括路由、拨号、交换、视频、WAN(ISDN、帧中继、ATM、…)、LAN、VLAN、… 二、故障处理模型   1、 界定问题(Define the Problem)   详细而精确地描述故障的症状和潜在的原因   2、 收集详细信息(Gather Facts)R>信…

怎么让模糊的数字变清楚_一键模糊图像变清晰,好家伙!这款神器插件你值得拥有...

让我们结伴,走进设计好家伙,最近有设计师朋友给我反映很多问题!其中吐槽最多的就是甲方给图不够清晰整个模特,产品都有种朦胧美我擦嘞,导入到软件作图放大后,像素啥都看不清有木有~!!找老板要清…

服务器安全问题处理

linux 安全加固设置 今天收到阿里云的邮件,一台linux服务器在荷兰被登录了。9.23分。我赶紧进去修改了下密码, 由于本公司又没专门的安全工程师,运维都是副业,主业都是开发,所以有些无可赖何,我进去把平常看…