У меня есть скрипт, утверждающий, что некоторые из моих индексов массива не определены, и я просто не могу понять, почему.
Вот минимальный тестовый пример:
<?php
// Define the two-dimensional array
$lg = [
"aapg-datapages" => [
"lgid" => "3148425",
"lgname" => "AAPG Datapages",
],
"abstracts-of-international-conservation-literature" => [
"lgid" => "3148426",
"lgname" => "AATA online: Abstracts of International Conservation Literature",
],
"academic-search-complete" => [
"lgid" => "48083863",
"lgname" => "Academic Search Complete",
],
];
// Dump just the first entry.
var_dump($lg['aapg-datapages']);
print "\n";
// Print the ID of the first entry.
print $lg['aapg-datapages']['lgid'];
print "\n";
// Print out all the names.
foreach($lg as $db => $properties){
print $properties['lgname']."\n";
}
print "\n";
// Print out all the IDs.
foreach($lg as $db => $properties){
print $properties['lgid']."\n";
}
Когда Я запускаю его в командной строке и получаю следующий вывод:
$ php test.php
array(2) {
["lgid"]=>
string(7) "3148425"
["lgname"]=>
string(14) "AAPG Datapages"
}
PHP Notice: Undefined index: lgid in /var/transfer/work/test.php on line 22
AAPG Datapages
AATA online: Abstracts of International Conservation Literature
Academic Search Complete
PHP Notice: Undefined index: lgid in /var/transfer/work/test.php on line 31
PHP Notice: Undefined index: lgid in /var/transfer/work/test.php on line 31
PHP Notice: Undefined index: lgid in /var/transfer/work/test.php on line 31
Я боролся с этим часами. Когда я var_dump
одна запись в массиве, он видит и lgid
и lgname
. Но если я пытаюсь получить доступ к lgid
, он выдает ошибку «неопределенный индекс», даже если он может получить lgname
с точно таким же кодом просто отлично.
Да, это многомерный массив, но я уверен, что не указываю на неправильный уровень массива.
Я попытался переименовать lgid
во что-то другое (glerp
, Я думаю), но это не имело никакого эффекта. Я не думаю, что PHP заботится о том, какое именно соглашение вы используете для окончания строки, но я попробовал \n
и \r\n
, на всякий случай.
Я пробовал в двух разных средах: PHP 7.2.24 в Ubuntu 18.04.4 () и PHP 7.3.17 в Red Hat Enterprise Linux 7.8 (Maipo) с одинаковыми результатами в обоих случаях.
Однажды первая запись в моем тестовом массиве начала работать, в то время как две другие продолжали читать как неопределенные. К сожалению, я понятия не имею, что я сделал, чтобы это произошло. Три записи оказались идентичными в моем тестовом файле, за исключением того, что одна работала, а две другие не работали.
Я что-то упускаю из виду? Я как-то вызвал какую-то ошибку exoti c в PHP? Я просто не знаю, что еще попробовать.