【发布时间】:2011-10-13 01:53:47
【问题描述】:
我在Determining what classes are defined in a PHP class file 使用了代码的修改版本,从特定的文件列表创建了类和函数的多维数组。我最终得到的是这个(我知道名称搞砸了,但我跑题了,不得不返回并更改 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
)
)
)
所以现在我需要能够访问每个类下的类名和函数名,而不知道它们中的任何一个的索引是什么。我已经尝试过 for 循环、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];抛出错误 bad offset 0
我确信类数组索引实际上被命名为类名会有问题,但我想我仍然可以使用数字索引。
基本上,我对如何访问数据以及如何使用正确的方向感到完全困惑。
我需要能够获取一个类名,然后获取该类下的所有函数名,并且需要能够通过从数组中检索它们在整个程序的不同点访问它们。
谢谢
我讨厌在向他人寻求帮助后几分钟就回答自己的问题。我觉得我好像在浪费你的时间。
你们对 foreach 的看法是对的,但这是一个棘手的问题。提出这个问题有助于让我自己了解我需要找到的东西,让我明白问题出在哪里。
这个数组有 3 层。有一个包含 3 个数组的数组,每个数组都有一个字符串而不是数字作为它的索引。它们中的每一个都包含自己的元素。
所以我必须遍历数组 1、2、3 来获取它们每个元素的字符串索引,然后使用该字符串元素和数字元素来获取最内部数组的内部元素。好的,这让我感到困惑,但这是对我有用的代码,使用 echo 和一些轻微的格式,所以我可以看到它工作。
$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: 另一个函数,任何函数,
tc_class_simplevar: set_var_test , get_var_test ,
another_freekin_class: 一些函数,另一个疯狂函数,
如果对其他人有帮助,这里的 Marks 版本与我的数组和变量名称进行比较。我会说这种方式是最干净的,它会减少几行代码。
foreach($objectList as $objects){
foreach($objects as $classname => $functions){
$cn = $classname;
foreach($functions as $functionname){
$fn = $functionname;
}
}
}
感谢您的帮助:-)
【问题讨论】:
标签: php multidimensional-array foreach