加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP如果没有索引,如何访问多维数组的所有元素?

发布时间:2020-12-13 17:38:44 所属栏目:PHP教程 来源:网络整理
导读:我在这里使用了修改版本的代码 Determining what classes are defined in a PHP class file,从特定的文件列表中创建了一个多维的类和函数数组.我最终得到的是这个(我知道这些名字搞砸了,但是我已经搞砸了,并且必须返回并更改3个不同文件中的类名和函数名,所
我在这里使用了修改版本的代码 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
                )

        )

)

所以现在我需要能够访问每个类下的类名和函数名,而不知道它们中的任何索引是什么.我已经尝试过循环,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

我确定类数组索引实际上被命名为类名会有问题,但我想我仍然可以使用数字索引.

基本上我对如何访问数据完全感到困惑,并且可以在正确的方向上使用一个点.

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

谢谢

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

你们对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:
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
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读