我似乎无法访问带有索引的数组中的数组。
这个
var_dump($graphed[0]);
把这个给我
array (size=2)
'date' => string '02-03-15' (length=8)
'weight' => string '82.327015155' (length=12)
这个
var_dump($graphed[0]['weight']);
给我这个
string '82.327015155' (length=12)
但是这个
var_dump($graphed[0][1]);
给我这个
A PHP Error was encountered
Severity: Notice
Message: Undefined offset: 1
Filename: progress/compare.php
Line Number: 17
null
我不知道从这里到哪里去。我所知道的关于PHP的一切告诉我这不应该发生。
顺便说一下,这个
echo phpversion();
给我
5.5.12
我疯了吗?怎么回事?
PHP在关联元素(带键)和索引元素(带索引)之间建立了明确的目的地。您不能以这种方式访问带有键的元素。换句话说:它们不是交错的。PHP将数组视为Array
(List
)(就像您在Java中所知道的那样)和HashMap
的组合。与Java的不同之处在于,还保证了密钥的有序性。但这并不意味着键本身就对应于索引。在HashMap<T>
中,两者都不能获得第5个CCD_值。
示例:
php > var_dump(array(1,2,3,'foo'=>'bar',7));
array(5) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
["foo"]=>
string(3) "bar"
[3]=>
int(7)
}
换句话说,"foo"
不映射在索引上,索引编号只考虑索引元素。对于索引器,就好像"foo" => "bar"
不存在一样。
但是,您可以获得键列表,这是一个索引数组,然后按照此处所写的方式选择该键:
$keys = array_keys($graphed[0]);
echo $graphed[0][$keys[1]];
PHP保证密钥排序,所以这样做是安全的(当然,如果您提前知道顺序,或者知道您在做什么)。
请注意,键包括索引:
php > var_dump(array_keys(array(1,2,3,'foo'=>'bar',7)));
array(5) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(2)
[3]=>
string(3) "foo"
[4]=>
int(3)
}