在读《php指南白菜版》的时候,文中提到,字符串本身也是一个隐式数组。并给出了以下代码:

1
2
<?php
echo 'Hello, World!';
1
2
3
4
<?php
$data['first']='Hello';
$data['first']['second']='world';
echo $data['first'];

看到结果的时候我很吃惊,有点不理解。之后百度了一下,找到一篇解释php字符串组成方式的文章,顿时大悟。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?php
$string ="hello world";
/*
这个PHP字符串是由 h , e , l ,  l , o , 空格 , w ,o,r,l,d 这几个字符组
至于是以什么结尾的我现在不了解, 可能需要查看PHP原代码才能发掘
*/
//那我以上所说的有什么根据呢?下面可以测试
echo $string[2];//显示出第3个字符 l   ,我们可以尝试改变
$string[2]="A";//更改其中的 一个字符;
echo $string;// 得到 heAlo world
//那么我们可以尝试为  $string[2] 更改为字符串
$string[2]="AAAAAA";//测试 看看PHP会不会把 其后面的字符覆盖
echo $string;// 得到 heAlo world  ,呵呵 看来PHP做了安全处理

至于给$data['first']['second']赋值为什么会改变$data['first']的第一个字符,我猜测是一种默认行为。只要先建立了字符串,再变二维数组都会更改第一个字符,除非二维数组用数字,指定了相应字符的位置。