【问题标题】:Call php variable array name in foreach loop在foreach循环中调用php变量数组名
【发布时间】:2025-12-18 18:55:02
【问题描述】:

我有以下名称的数组: $MyMondayClasses、$MyTuesdayClasses、$MyWednesdayClasses、$MyThursdayClasses、$MyFridayClasses

我有一个星期几的数组: $days = array('星期一', '星期二', '星期三', '星期四', '星期五');

我想遍历一周中的几天,然后运行适当的数组,但我不确定如何引用要生成的变量:

foreach($days as $value){
    foreach($My{$value}Classes as $ClassKey => $ClassVar){
        some code goes here
    }
}

我曾经在这类事情上使用 eval,但请理解这不是最佳实践。无论如何,上面的代码不起作用。

【问题讨论】:

  • 你为什么不上一堂课呢?我想一周中的课程会是相似的。
  • 您是否考虑过在另一个数组中构建您的 $MyDAYClasses 数组,并从一开始就为索引天数?例如classes = array('Monday'=> $MyMondayClasses), ...);这样你想查的时候就很容易找到。

标签: php arrays variables


【解决方案1】:

我有以下名称的数组:$MyMondayClasses、$MyTuesdayClasses、$MyWednesdayClasses、$MyThursdayClasses、$MyFridayClasses

听起来不太聪明。

你为什么不只拥有 一个 数组,以 'monday'、'tuesday' 等为键 - 然后在该键下拥有每天的数据数组......?

【讨论】:

  • Sounds not very clever 听起来很不聪明。我做了一个语法错误:-P(+1)
【解决方案2】:

没有意义..你应该使用数组,但如果你坚持你可以尝试:

foreach ( $days as $value ) {
    $name = sprintf("My%sClasses", $value);
    if (! isset(${$name})) { // the boss asked
        continue;
    }
    foreach ( ${$name} as $ClassKey => $ClassVar ) {
        // play some ball
    }
}

【讨论】: