Кажется, я не могу получить доступ к массиву внутри массива с индексом.
это
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 заключается в том, что, кроме того, гарантируется, что ключи будут упорядочены. Но это не означает, что ключи themselve соответствуют индексу. В HashMap<T>
вы не можете получить значение i
-th.
Пример:
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)
}
date
иweight
. Он не имеет ничего по индексу1
.$graphed[0][1]
вернется?