如果不知道索引,如何访问多维数组的所有元素



我在这里使用了修改后的代码,确定在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
                )
        )
)

所以现在我需要能够访问每个类下的类名和函数名,而不知道它们的索引是什么。我已经尝试过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[我][2];抛出错误偏移量0

我确信会有一个问题,类数组索引实际上被命名为类名,但我认为我仍然可以使用数字索引。

基本上我完全不知道如何访问数据,可以在正确的方向上使用一个点。

我需要能够获得一个类名,然后获得该类下的所有函数名,并且需要能够通过从数组中检索它们在整个程序的不同点访问它们。

谢谢我讨厌在向别人求助几分钟后才回答自己的问题。我觉得我好像浪费了你的时间。

你们是对的,但这是一个棘手的问题。问这个问题有点帮助我自己通过我需要找到什么,所以我明白了问题在哪里。

这个数组有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:Another_function, whatever_function

tc_class_simplevar:Set_var_test, get_var_test,

another_freekin_class:Some_function, another_crazy_function,

对于其他任何人,如果它有帮助,这里是我的数组和变量名比较的标记版本。我想说这种方式是最干净的,它减少了几行代码。

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);

相关内容

  • 没有找到相关文章