Доступ к вложенному ассоциативному массиву с неизвестными ключами - PullRequest
1 голос
/ 08 ноября 2011

Я пытаюсь получить доступ к элементам из многомерного массива в объекте.Например, предположим, что существует некоторый класс Foo, в котором есть переменная $ phone, представляющая многомерный массив.

$phone -> structure will look like
Array {
  "home" Array(1) {[0] = "555-1212"},
  "work" Array(2) {[0] = "555-1234", [1] = "555=5434"},
  "other" Array(1) {[0] = "555=9090"}
}

Примечание. Мы не можем предполагать, что знаем ключи.

Я могу получить доступ к значению, дав явные ключи, например,

$foo->phone["home"][0]

Проблема возникает, когда я не знаю ключи в явном виде и не извлекаю их из других источников.Например, если $ type = "phone", $ subtype = "home", и я хочу, чтобы первая запись, которую я ожидал использовать:

$object->$type[$subtype][0]

, чтобы получить значение, но я получаю ошибку, и онане думает, что это массив.Я не уверен, где ошибка.

Следующим шагом будет добавление элементов в массив самого низкого уровня.Я предполагаю, что следующее будет работать, но это не так:

array_push($object->$type[$subtype], $value)

Этот многомерный массив позволит мне хранить телефонные номера, помеченные клавишами, в одной вложенной структуре.Если это усложняет проблему, пожалуйста, дайте мне знать.Причина, по которой я выбрал эту структуру, заключается в том, что ключи могут быть любыми пользовательскими настройками.

Спасибо.

1 Ответ

1 голос
/ 08 ноября 2011

Я считаю, что это сработает, если вы сохраните $ object -> $ type в качестве своей собственной переменной, а затем получите доступ к этой переменной, чтобы углубиться в массив.

...