【问题标题】:how to create a new column from php foreach如何从 php foreach 创建一个新列
【发布时间】:2015-10-30 22:32:48
【问题描述】:

我在星期一有一组课程,它们在 5 个不同的房间进行。我想使用 div 根据位置在列中显示它们并按位置排序,开始。我得到的数据没有问题(找到在星期一运行的所有类),但它只是在一列中列出它,所以我的 foreach 数组不正确。 这是$数据

$calendar = array();
foreach ($data as $row) {
    $calendar[$row[0]][] = $row;
}
foreach($calendar as $key => $row) {
       foreach($row as $field => $value) { 
           $recNew[$field][] = $value;
       }
}

这里是数组摘录

    array(1) {
     [""]=> array(20) 
     {
     [0]=> array(1) {
     ["calendars"]=> array(9) {
     ["id"]=> string(3) "742" 
     ["title"]=> string(4) "Yoga" 
     ["start_date"]=> string(10) "2015-09-14" 
     ["end_date"]=> string(10) "0000-00-00" 
     ["start_time"]=> string(8) "20:00:00" 
     ["end_time"]=> string(8) "21:00:00" 
     ["location"]=> string(8) "Studio 1" 
     ["calendar_category_id"]=> string(1) "3" 
     ["recur_mon"]=> string(1) "1" 
      } 
     }
     [1]=> array(1) { 
     ["calendars"]=> array(9) { 
     ["id"]=> string(3) "743" 
     ["title"]=> string(2) "GX" 
     ["start_date"]=> string(10) "2015-09-14" 
     ["end_date"]=> string(10) "0000-00-00" 
     ["start_time"]=> string(8) "18:00:00" 
     ["end_time"]=> string(8) "18:45:00" 
     ["location"]=> string(8) "Studio 1" 
     ["calendar_category_id"]=> string(1) "3" 
     ["recur_mon"]=> string(1) "1" 
    } } 
    [2]=> array(1) { 
    ["calendars"]=> array(9) { 
    ["id"]=> string(3) "447" 
    ["title"]=> string(4) "Spin"  
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "09:15:00" 
    ["end_time"]=> string(8) "10:00:00" 
    ["location"]=> string(8) "Studio 1" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1" 
     } } 

    [3]=> array(1) { 
    ["calendars"]=> array(22) { 
    ["id"]=> string(3) "448" 
    ["title"]=> string(4) "Spin" 
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "12:15:00" 
    ["end_time"]=> string(8) "13:00:00" 
    ["location"]=> string(8) "Studio 1" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1"  } } 

    [4]=> array(1) { 
    ["calendars"]=> array(22) { 
    ["id"]=> string(3) "684" 
    ["title"]=> string(4) "Spin" 
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "16:30:00" 
    ["end_time"]=> string(8) "17:15:00" 
    ["location"]=> string(8) "Studio 1" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1" 
    } } 

    [5]=> array(1) { 
    ["calendars"]=> array(22) { 
    ["id"]=> string(3) "545" 
    ["title"]=> string(4) "Yoga" 
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "18:15:00" 
    ["end_time"]=> string(8) "19:00:00" 
    ["location"]=> string(8) "Studio 1" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1"
    } } 

[6]=> array(1) { ["calendars"]=> array(9) { 
    ["id"]=> string(3) "549" 
    ["title"]=> string(4) "Yoga" 
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "09:00:00" 
    ["end_time"]=> string(8) "10:00:00" 
    ["location"]=> string(8) "Studio 2" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1"  } } 

    [7]=> array(1) { ["calendars"]=> array(9) { 
    ["id"]=> string(3) "688" 
    ["title"]=> string(7) "Weights"
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "10:10:00" 
    ["end_time"]=> string(8) "11:00:00" 
    ["location"]=> string(8) "Studio 2" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1"
    } } 

    [8]=> array(1) { ["calendars"]=> array(9) { 
    ["id"]=> string(3) "572" 
    ["title"]=> string(4) "Yoga" 
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "12:10:00" 
    ["end_time"]=> string(8) "13:10:00" 
    ["location"]=> string(8) "Studio 2" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1"  
    } } 

    [9]=> array(1) { ["calendars"]=> array(9) { 
    ["id"]=> string(3) "548" 
    ["title"]=> string(4) "Spin" 
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "16:00:00" 
    ["end_time"]=> string(8) "16:55:00" 
    ["location"]=> string(8) "Studio 2" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1" 
    } } 

    [10]=> array(1) { ["calendars"]=> array(9) { 
    ["id"]=> string(3) "573" 
    ["title"]=> string(11) "Power Yoga"
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "18:45:00" 
    ["end_time"]=> string(8) "19:45:00" 
    ["location"]=> string(8) "Studio 2" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1" 
    } } 

    [11]=> array(1) { ["calendars"]=> array(9) { 
    ["id"]=> string(3) "742" 
    ["title"]=> string(4) "Yoga" 
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "20:00:00" 
    ["end_time"]=> string(8) "21:00:00" 
    ["location"]=> string(8) "Studio 2" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1"
    } } 

    [12]=> array(1) { ["calendars"]=> array(9) { 
    ["id"]=> string(3) "552" 
    ["title"]=> string(5) "Zumba" 
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "10:15:00" 
    ["end_time"]=> string(8) "11:15:00" 
    ["location"]=> string(8) "Studio 3" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1"
    } } 

    [13]=> array(1) { ["calendars"]=> array(9) { 
    ["id"]=> string(3) "622" 
    ["title"]=> string(4) "Yoga"
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "11:30:00" 
    ["end_time"]=> string(8) "12:00:00" 
    ["location"]=> string(8) "Studio 3" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1"
    } } 

    [14]=> array(1) { ["calendars"]=> array(9) { 
    ["id"]=> string(3) "570" 
    ["title"]=> string(22) "Body Pump (Doriana P.)" 
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "12:15:00" 
    ["end_time"]=> string(8) "13:15:00" 
    ["location"]=> string(8) "Studio 3" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1" 
    } } 

    [15]=> array(1) { ["calendars"]=> array(9) { 
    ["id"]=> string(3) "740" 
    ["title"]=> string(4) "Spin" 
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "13:30:00" 
    ["end_time"]=> string(8) "14:00:00" 
    ["location"]=> string(8) "Studio 4" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1
    } } 

    [16]=> array(1) { ["calendars"]=> array(9) { 
    ["id"]=> string(3) "623" 
    ["title"]=> string(7) "Weights" 
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "16:45:00" 
    ["end_time"]=> string(8) "17:45:00" 
    ["location"]=> string(8) "Studio 4" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1"
    } } 

    [17]=> array(1) { ["calendars"]=> array(9) { 
    ["id"]=> string(3) "586" 
    ["title"]=> string(2) "GX" 
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "18:00:00" 
    ["end_time"]=> string(8) "18:30:00" 
    ["location"]=> string(8) "Studio 5" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1"
    } } 

    [18]=> array(1) { ["calendars"]=> array(9) { 
    ["id"]=> string(3) "613" 
    ["title"]=> string(7) "Weights"
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "18:45:00" 
    ["end_time"]=> string(8) "19:30:00" 
    ["location"]=> string(8) "Studio 5" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1"
    } } 

    [19]=> array(1) { ["calendars"]=> array(9) { 
    ["id"]=> string(3) "621" 
    ["title"]=> string(5) "Zumba" 
    ["start_date"]=> string(10) "2015-09-14" 
    ["end_date"]=> string(10) "0000-00-00" 
    ["start_time"]=> string(8) "19:45:00" 
    ["end_time"]=> string(8) "20:45:00" 
    ["location"]=> string(8) "Studio 5" 
    ["calendar_category_id"]=> string(1) "3" 
    ["recur_mon"]=> string(1) "1"
} } 
    }  

    <?php foreach ($recNew as $key => $classes) { ?>
    <div class="locations-wrapper">
        <div class="my-locations"><?php echo $location[$key]; ?></div>
        <?php foreach ($classes as $class) : ?>
        <!-- class info here -->
        <div class="class">
            <h4><?php echo $class['calendars']['title']; ?></h4>
        </div><!-- end div class -->
        <?php endforeach; ?>
    </div>
    <?php } ?>

这就是我得到的

可能需要位置作为此工作的关键。

【问题讨论】:

  • 我不知道您的脚本是如何生成您需要的输出的,但如果是这样,将其内容保留在 css 中的位置浮动将解决您的问题。一般来说,如果你能用你的 php 获得正确的 html 结构,那么样式几乎可以是你想要的任何 css。
  • 考虑旋转表格,使Studio 1, Studio 2,... 堆叠在一起,他们的班级向右出。编码和样式会更容易
  • 您可以为该位置的阵列添加另一个层。会去"" =&gt; array( 0 =&gt; array( 'calendars' =&gt; array( 'Studio 2' =&gt; array "id"=&gt; "742",...更容易for循环
  • 是的,我在设置宽度的 div 上有一个左浮动,但我的问题出在脚本中,并让不同的位置在新列中开始。
  • @sloga:在你的代码中添加你的 $data 数组,我可以帮助你

标签: php multidimensional-array foreach


【解决方案1】:

您可以尝试使用html表格打印结果:

<?php 
$calendar = array();
foreach ($data as $row) 
{
    for($i=0;$i<count($row);$i++)
    {   if(!array_key_exists($row[$i]["calendars"]["location"], $calendar))     
            $calendar[$row[$i]["calendars"]["location"]] = array();
        array_push($calendar[$row[$i]["calendars"]["location"]], $row[$i]["calendars"]);
    }
}
?>
<table>
<tr>
<?php
foreach($calendar as $key => $row):
?>
<td>

<table>
<tr><td><?php echo $key;?></td></tr>
<?php 
foreach($row as $r):
?>
<tr><td><?php echo $r["title"]; ?></td></tr>
<?php endforeach;?>
</table>
</td>
<?php endforeach;?>
</tr>
</table>

【讨论】:

  • 甜蜜!我能够使用它并使用 div 和 css 进行设计。谢谢!
    $row): ?>
    php回显$键; ?>

猜你喜欢
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-14
  • 1970-01-01
相关资源
最近更新 更多