PHP数组,获取循环索引信息

时间:2012-09-28 12:32:08

标签: php arrays multidimensional-array foreach

让我解释下面的阵列:

1,2和3代表星期一,星期二和星期三。

13,14和15是这个月的日子。

15:00 - 16:20(..)是电影的播放时间。

意思是星期一13日下午3点到4点20分你可以看“蝙蝠侠”。

同样在星期一13日下午6:10到晚上7:30,您可以观看“悲惨”......等等。

$myarray
: array = 
  1: array = 
    13: array = 
      15:00 - 16:20: array = 
        Movie: string = Batman                 
      18:10 - 19:30: array = 
        Movie: string = Misery                 
  2: array = 
    14: array = 
      15:00 - 16:20: array = 
        Movie: string = The Avengers                
      16:20 - 17:50: array = 
        Movie: string = The Hours                 
  3: array = 
    15: array = 
      18:10 - 19:30: array = 
        Movie: string = Gladiator  

你能帮我回复一下这个数组,你可以用以下格式看到它的信息吗?:

Monday - 13
15:00 - 16:20 - Batman
18:10 - 19:30 - Misery
Tuesday – 14 
15:00 - 16:20 - The Avengers                
16:20 - 17:50 - The Hours
Wednesday – 15
8:10 - 19:30  -  Gladiator  

非常感谢!

2 个答案:

答案 0 :(得分:0)

我正在假设你的数组的真实布局,下面将创建一个$weekDays数组来映射一个整数和一周中的某一天(我定义了键,这样你就可以在任何一个时间):

$weekDays = (1=>'Monday', 2=>'Tuesday', 3=>'Wednesday', 4=>'Thursday', 5=>'Friday', 6=>'Saturday', 7=>'Sunday');

// loop through each week-day in the array
foreach ($myarray as $weekDay => $dates) {
    // loop through each "movie date" in the current week-day block
    foreach ($dates as $monthDate => $movies) {
        // output the day-of-the-week and the date-of-the-month
        echo $weekDays[$weekDay] . ' - ' . $monthDate . '<br />';

        // loop through all of the movies for the current date-of-the-month
        foreach ($movies as $movieTime => $movie) {
            // output the movie's time and name
            echo $movieTime . ' - ' . $movie . '<br />';
        }
    }
}

这假设您的示例中的数组实际上采用以下格式:

$myarray = array(
    1 => array(
        13 => array(
            '15:00 - 16:20' => array(
                'Movie' => 'Batman'
            ),
            '18:10 - 19:30' => array(
                'Movie' => 'Misery'
            )
        ), // ... can repeat
    ), // ... can repeat
);

答案 1 :(得分:0)

您可以尝试以下代码:See Demo

$myarray = array(
    1 => array(
        13 => array(
            "15:00 - 16:20" => array(
                "Movie" => " Batman"
            ),
            "18:10 - 19:30" => array(
                "Movie" => " Misery"
            )
        )
    ),
    2 => array(
        14 => array(
            "15:00 - 16:20" => array(
                "Movie" => " The Avengers "
            ),
            "16:20 - 17:50" => array(
                "Movie" => " The Hours "
            )
        )
    ),
    3 => array(
        15 => array(
            "18:10 - 19:30" => array(
                "Movie" => " Gladiator"
            )
        )
    )
);


$days = array(1 => 'Monday',2 => 'Tuesday',3 => 'Wednesday');

echo "<pre>";
foreach ( $myarray as $key => $value ) {
    foreach ( $value as $valueKey => $info ) {
        echo $days[$key], " - ", $valueKey, PHP_EOL;
        foreach ( $info as $infoKey => $infoValue ) {
            echo $infoKey, " - ", $infoValue['Movie'], PHP_EOL;
        }
        echo PHP_EOL;
    }
}

输出

Monday - 13
15:00 - 16:20 -  Batman
18:10 - 19:30 -  Misery

Tuesday - 14
15:00 - 16:20 -  The Avengers 
16:20 - 17:50 -  The Hours 

Wednesday - 15
18:10 - 19:30 -  Gladiator