В настоящее время я ищу переписывание некоторых perl cgi-скриптов в php, в основном в порядке, чтобы я мог узнать php. Все идет хорошо, за исключением того, что я не могу разглядеть, как преобразовать хеш-хэш хеша хеша в массив php. Возьмите этот сценарий (не реальный, но идея такая же) У меня есть 5 сетевых узлов, называемых A, B, C, D, E. Каждый узел на самом деле стек из 3-х переключателей, называемых TOP, MIDDLE, BOTTOM Каждый коммутатор имеет 10 интерфейсов называется 1 до 10.Как преобразовать хеш-хэш хэша хэша в php
У меня есть сценарий, который опрашивает круглые каждый интерфейс и записывать ввод байтов в базе данных, как это : -
node switch interface bytes
A TOP 1 999
B MIDDLE 1 999
A MIDDLE 2 999
и т.д.
Я могу прочитать базу данных в PHP, но я отклеился. В Perl'е я только читать данные и хранить его в хэш хэшей, обернув хотя запрос базы данных
`While $ref fetchrow_hashref() {
$hash{$ref{'NODE'}}{$ref{'Switch'}}{$ref{'Interface'}=$ref{'Bytes'}
}`
Так что теперь я могу получить доступ любое значение в моем CGI код, используя имена $hash{A}{Top}{1}
вернутся 999
Но когда я пытаюсь сделать что-то подобное в php с ассоциативным массивом массивов, это происходит неправильно. Я использовал
$hash[]=[$ref["NODE"}=>
[$ref["Switch"]=>
[$ref["Interface"]=>
$ref["Bytes"]
]
]
];
var_dump хэша выглядит правильно, но я, кажется, не быть в состоянии напечатать значение из массива с помощью print $hash[A][TOP][1];
Пожалуйста, я могу иметь указатели на мой ошибки
Что такое массив '$ ref' в PHP-коде? Если вы установите значение '$ hash ['A'] ['TOP'] [1]', вы получите его обратно таким же образом. Ссылки автоматически разыменовываются в PHP, поэтому, например, итерация по массиву или массиву ссылок будет одинаковой. – syck