二维PHP数组无法正确输出

时间:2014-04-16 22:05:34

标签: php html

我有以下日期和地点数组 - 基本上每个日期都需要允许多个地方。我试图将下面的数组显示为以下格式:

20140411
贝辛斯托克

20140405
Basingstoke的

20140419

......等等

数组:

Array
(
    [20140411] => Array
        (
            [0] => Array
                (
                    [0] => Basingstoke
                )

            [1] => Array
                (
                    [0] => Salisbury
                )

        )

    [20140405] => Array
        (
            [0] => Array
                (
                    [0] => Basingstoke
                )

        )

    [20140419] => Array
        (
            [0] => Array
                (
                    [0] => Salisbury
                )

        )

    [20140427] => Array
        (
            [0] => Array
                (
                    [0] => Basingstoke
                )

        )

)

我相信我已经接近了,但在使用数组/键等时,我总是遇到某种心理障碍。我正在尝试做一个嵌套的foreach循环,它会显示约会好,但我刚刚得到"阵列"为地点输出:

foreach ($dates as $date => $dateKey) {

    // Format the date
    $theDate = DateTime::createFromFormat('Ymd', $date);
    $theFormattedDate = $theDate->format('d-m-Y');

    echo '<h4>'.$theFormattedDate.'</h4>';

    foreach ($dateKey as $key => $venue) {
        echo $venue;
    }

}

有人可以找到我在这里出错的地方吗?

编辑:

这是创建数组的地方,如果有帮助吗?

$dates = array();

while ( have_rows('course_date') ) : the_row(); 
    $theVenue = get_sub_field('venue');

    // Use the date as key to ensure values are unique
    $dates[get_sub_field('date')][] = array(
        $theVenue->post_title
    );
endwhile; 

2 个答案:

答案 0 :(得分:5)

在你的情况下,场地是一个阵列 它始终是一个数组,其中唯一的元素可以解析为[0] 因此...

foreach ($dates as $date => $dateKey) {

    // Format the date
    $theDate = DateTime::createFromFormat('Ymd', $date);
    $theFormattedDate = $theDate->format('d-m-Y');

    echo '<h4>'.$theFormattedDate.'</h4>';

    foreach ($dateKey as $key => $venue) {
        echo $venue[0];
    }

}

或者,如果你可以在最后一级数组中有多个场地,你可以重新编写内部foreach,再添加一个:

foreach ($dates as $date => $dateKey) {

    // Format the date
    $theDate = DateTime::createFromFormat('Ymd', $date);
    $theFormattedDate = $theDate->format('d-m-Y');

    echo '<h4>'.$theFormattedDate.'</h4>';

    foreach ($dateKey as $key => $venues) {
        foreach($venues as $v) {
           echo $v;
        }
    }
}

答案 1 :(得分:3)

地方的嵌套深度为1级,还需要一个foreach

没关系,其他人说这个插件应该像那样工作:)