php字符串与数组的特殊情况
来看一个有趣的实验
实验1
<?php
$arr = array('a','b','c');
var_dump(isset($arr[1][0]));
var_dump($arr[0][0]);
var_dump($arr[1][0]);
#输出
bool(true)
string(1) "a"
string(1) "b"
没错,$arr命名是一维数组上面代码却返回true
原因:
还记得php中的字符串可以用数组的形式进行读取操作的吗?
实验2
$var = 'qwertyui';
var_dump($var['1']);
var_dump($var[1]);
var_dump($var[2]);
#输出
string(1) "w"
string(1) "w"
string(1) "e"
但值得注意的是,php中字符串的数据结构不是数组,而是提供了一个方便的操作而已
实验3
<?php
$var = 'qwertyui';
var_dump($var['1']);
var_dump($var[1]);
var_dump($var[2]);
$var[8] = '234';
var_dump($var);
$var[12] = '987';
var_dump($var);
#输出
string(1) "w"
string(1) "w"
string(1) "e"
string(9) "qwertyui2"
string(13) "qwertyui2 9" #2和9之间有三个空格
上面例子中字符串每个字符可以看做是数组的一个元素,数组索引值从0开始;执行到$var[12] = '987' 这段代码时,由于现在的$var 变成了'qwertyui2',长度为9,及,很明显长度不够12+1=13(索引值从0开始);所以在执行时会将$var[9],$var[10],$var[11]填充为空格,$var[12]时会把字符串'987'的第一个字符设置为值,因此输出为"qwertyui2 9" (2和9之间有三个空格)。
上面的实验1中
$arr[0][0]在被php解析的过程是这样的:
$arr[0] 指向的是字符串 'a' 然后对字符串进行操作 相当于 $str='a'; $str[0]
php字符串与数组的特殊情况的更多相关文章
- sizeof、strlen、字符串、数组,整到一块,你还清楚吗?
写在前面 sizeof.strlen.字符串.数组,提到这些概念,相信学过C语言的人都能耳熟能详,也能谈得头头是道,但是,在实际运用中,当这些内容交织在一起时,大家却不一定能搞地清清楚楚,本文的目的正 ...
- json对象与字符串的相互转换,数组和字符串的转换
1.json对象转换为字符串 JSON.stringify(value [, replacer] [, space]) var student = new Object(); student.id ...
- linkin大话数据结构--字符串,数组,list之间的互转
在实际开发中,我们经常会用到字符串,字符数组,字符list,当然也会不可避免的进行这3者之间的互相转换. 在使用到Apache和Google下的common包,可以这样子实现: package tz. ...
- ajax处理返回的三种格式(json格式 , xml通用格式 , html文本格式)(数据类型:整数、字符串、数组、对象)(基础最重要!)
ajax方法的参数 常用的ajax参数比如url,data,type,包括预期返回类型dataType,发送到服务器的数据的编码类型contentType,成功方法,失败方法,完成方法.除了这些以外还 ...
- JavaScript:记录一些字符串和数组常用的方法
字符串: 字符串的方法:注意:都不会改变原来的字符串,返回值为新的字符串.如果(1,2),一般是包含小标1,不包含下标2 str.charAt(i): 取str的第i+1个字符,类似数组的arr[i] ...
- Java中将一个字符串传入数组的几种方法
String Str="abnckdjgdag"; char a[]=new char[Str.length()]; -------------------方法1 用于取出字符串的 ...
- 03- Shell脚本学习--字符串和数组
字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号.单双引号的区别跟PHP类似: 单双引号的区别: 双 ...
- js中字符串和数组相互转化的方法
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #e4af0a } p. ...
- bash中不可以用字符串做数组下标
bash中可以用字符串做数组下标吗例如 test["abc"]=1------解决方案-------------------- 好像是误会,是awk里可以,bash shell里不 ...
随机推荐
- HBase RowKey与索引设计
1. HBase的存储形式 hbase的内部使用KeyValue的形式存储,其key时rowKey:family:column:logTime,value是其存储的内容. 其在region内大多以升序 ...
- ubuntu18系统美化
1. 将选定的背景图片 login-bg.jpg 移动到 /usr/share/backgrounds/ 目录下 sudo mv currentdir/mypicture.jpg /usr/share ...
- 【opencv实践】边缘检测
边缘检测: 一.canny算子 Canny边缘检测根据对信噪比与定位乘积进行测度,得到最优化逼近算子,也就是Canny算子.类似与 LoG 边缘检测方法,也属于先平滑后求导数的方法. 二.canny算 ...
- java中的标识符、修饰符、关键字
关键字的特点:1.完全小写的字母,2,在增强版记事本中有特殊颜色 例如@是电子邮箱当中有特殊含义的.被保留的.不能随意使用的字符,关键字. 例如图中public.class.static.void是关 ...
- 在web项目启动时,执行某个方法
在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 在工作中遇到 ...
- windows上安装zip版mongodb
版本3.4:现将mongodb解压,再选择一个位置创建data文件夹并在其下创建db文件夹和log文件夹 然后编写mongod.cfg文件,注意这里用的yaml格式,对空格很敏感,并且要注意mongo ...
- 7、字典和string的用法
#dic={1:'alex','age':35,'hobby':{'girl_name':'铁锤','age':45},'is_handsome':True} # dic={'age':'alex', ...
- GraphQL Java Demo代码
mvn 引用GraphQL <dependency> <groupId>com.graphql-java</groupId> <artifactId>g ...
- 软件测试-Svn服务器搭建全过程-基于Centos6.7-64bit
本文详细介绍了在CentOs6.7-64bit服务器上搭建SVN版本控制服务 工具准备 CentOs6.7-64bit操作系统:关闭linux防火墙:设置定固IP--DHCP(动态):安装系统过程中开 ...
- css3写出飘雪花特效
大冬天的,飘雪花的特效,你可能要用上了吧.通常情况下用jQuery写飘雪花的特效,但用css3写,其实特别简单,新手一看就懂,那就告别jQuery,用css3轻松搞定飘雪花特效吧! 点击查看特效演示 ...