数组结构示例:
$array = array(
'a' => array(
'b' => 'c'
)
);
当在$array [‘a’] [‘b’] [‘x’]上使用echo命令时,它显示’c’的值.为什么会发生这种情况我真的不明白,因为$array [‘a’] [‘b’] [‘x’]没有定义.
然后当我尝试使用命令$array [‘a’] [‘b’] [‘x’] =’y’添加另一个值时;
它将$array [‘a’] [‘b’]的值重写为’y’
不知怎的,我真的不明白这种行为,有人可以解释这是怎么可能的?那么我怎么能在$array [‘a’] [‘b’] [‘x’] =’xyz’创建一个新的字符串值来覆盖$array [‘a’] [‘b’] ?
解决方法:
它实际上与数组无关.这是一个字符串问题.
在PHP中你可以access and modify characters of a string with array notation.考虑这个字符串:
$a = 'foo';
$a [0]给你第一个字符(f),$a [1]给你第二个等等.
以这种方式分配字符串将使用新字符串的第一个字符替换现有字符,因此:
$a[0] = 'b';
结果是$a’嘘’.
现在你要做的是传递一个字符’x’作为索引. PHP解析为索引0(传递一个字符串中的数字,如’1′,虽然会按预期工作(即访问第二个字符)).
在您的情况下,字符串只包含一个字符(c).所以调用$array [‘a’] [‘b’] [‘x’] =’y’;与$array [‘a’] [‘b’] [0] =’y’相同;它只是将字符从c更改为y.
如果你有一个更长的字符串,比如’foo’,$array [‘a’] [‘b’] [‘x’] =’y’;会导致$array [‘a’] [‘b’]的值为’yoo’.
您无法为$array [‘a’] [‘b’]分配新值而不会覆盖它.变量只能存储一个值.你可以做的是为$array [‘a’] [‘b’]分配一个数组并捕获前一个值.例如.你可以这样做:
$array['a']['b'] = array($array['a']['b'], 'x' => 'xyz');
这将导致:
$array = array(
'a' => array(
'b' => array(
0 => 'c',
'x' => 'xyz'
)
)
);
进一步阅读:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。