PHP Как получить доступ ко всем элементам многомерного массива, если ни один индекс не известен?

Здесь я использовал модифицированную версию кода. Определение классов, определенных в файле класса PHP, для создания многомерного массива классов и функций из определенного списка файлов. То, что я закончил, – это (я знаю, что имена перепутаны, но я сходил с ума и должен был вернуться и изменить имена классов и имена функций в 3 разных файлах, поэтому допустим, что это были законные имена классов и имена функций),

Array ( [0] => Array ( [namethis_whatever_I_want] => Array ( [0] => another_function [1] => whatever_function ) ) [1] => Array ( [tc_class_simplevar] => Array ( [0] => set_var_test [1] => get_var_test ) ) [2] => Array ( [another_freekin_class] => Array ( [0] => some_function [1] => another_crazy_function ) ) ) 

Поэтому теперь мне нужно иметь доступ к именам классов и именам функций под каждым классом, не зная, для какого индекса для любого из них. Я пробовал для циклов, foreach и использовал счетчики, такие как $ i и $ ii, для доступа к ним с помощью численного индекса, но ничего не пытаюсь распечатать что-либо, кроме мусора или ошибок.

Я думал что-то вроде встроенных foreach-операторов

 $i = 0; foreach($array as $class){ echo $class[$i]; $ii = 0; foreach($class as $val){ echo $val[$ii]; $ii++; } $i++; } 

Но не повезло с этим.

Также пытается получить доступ к $ array [$ i] [$ i]; или $ array [$ i] [$ ii]; выбрасывает ошибочное смещение ошибки 0

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

В основном я совершенно смущен тем, как получить доступ к данным и использовать точку в правильном направлении.

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

спасибо

Я ненавижу отвечать на свой вопрос через несколько минут после того, как прошу других о помощи. Мне кажется, что я потратил ваше время.

Вы, ребята, правы в преддверии, но это было сложно. Задавая вопрос, было любопытно поговорить о том, что мне нужно было найти, и поэтому я понял, где эта проблема.

В этот массив входят 3 слоя. Существует массив, содержащий 3 массива, и каждый из них имеет строку вместо численного индекса. Каждый из них содержит собственные элементы.

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

 $size = sizeof($objectList); for($i = 0; $i < $size; $i++){ foreach($objectList[$i] as $key => $val){ $className = $key; echo $className . ": <br/>"; foreach($objectList[$i][$className] as $val){ $functionName = $val; echo $functionName . " , "; } echo "<br/><br/>"; } } 

В результате

namethis_whatever_I_want: another_function, whatever_function,

tc_class_simplevar: set_var_test, get_var_test,

another_freekin_class: some_function, another_crazy_function,

Для кого-то еще, если это помогает, вот версия Marks с моими массивами и именами переменных для сравнения. Я бы сказал, что этот путь самый чистый, и он вырезает пару строк кода.

 foreach($objectList as $objects){ foreach($objects as $classname => $functions){ $cn = $classname; foreach($functions as $functionname){ $fn = $functionname; } } } 

Спасибо за помощь 🙂

foreach также позволяет указать ключевую часть итератора, поэтому вы можете циклически перебирать ассоциативные массивы как:

 foreach($array as $key => $val){ echo $array[$key]; // prints $val } 

Итак, в вашем случае:

 foreach($rootarray as $classarray){ foreach($classarray as $classname => $functions){ // $classname contains the name of the class foreach($functions as $functionname){ // $functionname contains the name of the function } } } 

foreach – ваш друг:

 foreach($array as $key => $value) echo('$array['.$key.'] = '.$value);