我如何使用数组来安排发布的帖子?

时间:2016-05-28 09:50:03

标签: php codeigniter

$task = array(
                "t2"    => array("10:11","12:00","23:18"),
                "t3"    => array("08:00","11:30"),
    );
$post = array("post 1","post 2","post 3","post 4","post 5","post 6","post 7");
大家好, 我如何使用数组来安排发布的帖子?我尝试过使用foreach,但它不适合我:(

我想获得如下的时间表:

Post 1: T2 at 10:11
Post 2: T2 at 12:00
Post 3: T2 at 23:18
Post 4: T3 at 08:00
Post 5: T3 at 11:30
Post 6: T2 at 10:11
Post 7: T2 at 12:00

.......

请帮助我:)

3 个答案:

答案 0 :(得分:0)

<?php

$tasks = array(
    "t2"    => array("10:11","12:00","23:18"),
    "t3"    => array("08:00","11:30"),
);
$posts = array("post 1","post 2","post 3","post 4","post 5","post 6","post 7");


$i = 0; $output = '';
$t = count($posts);
while (true) {
    foreach ($tasks as $key => $times) {
        foreach($times as $time) {
            if($i == $t) break(3);
            $output .= sprintf("%s: %s at %s\n", ucfirst($posts[$i]), ucfirst($key), $time);
            $i++;
        }
    }
};
print $output;

/* Outputs:

Post 1: T2 at 10:11
Post 2: T2 at 12:00
Post 3: T2 at 23:18
Post 4: T3 at 08:00
Post 5: T3 at 11:30
Post 6: T2 at 10:11
Post 7: T2 at 12:00

*/

答案 1 :(得分:0)

你需要这个。首先,您需要创建一个易于访问和灵活的数组,在创建数组时,您需要存储数据总量,从而导致您的帖子递归使用相同的数据。在这里,我创建一个$total变量来存储总值并检查第二个foreach循环是否大于或者不是,如果它只是再次将当前循环变量$i设置为0以从中访问数组第一个指数。

Online Check

$task = array(
            "t2"    => array("10:11","12:00","23:18"),
            "t3"    => array("08:00","11:30"),
        );
$post = array("post 1","post 2","post 3","post 4","post 5","post 6","post 7");

$arr = array();
$i = 0;
foreach($task as $k => $t){
    foreach($t as $tas){
        $arr[$i++] = array($k, $tas);
    }
}
$total = $i - 1;
$i = 0;
foreach($post as $val){
    if($i > $total)
        $i = 0;
    echo ucfirst($val).": ".ucfirst($arr[$i][0])." at ".$arr[$i][1]."\n";
    $i++;
}

答案 2 :(得分:-1)

试试这个:

$task =  array(
    array("t2", "10:11"),
    array("t2", "12:00"),
    array("t2", "23:18"),
    array("t3", "08:00"),
    array("t3", "11:30")
);

$post = array("post 1","post 2","post 3","post 4","post 5","post 6","post 7");

$taskIndex = 0;

foreach($post as $p)
{
    $idx = $taskIndex % sizeof($task);
    echo($p.': '.$task[$idx][0].' at '.$task[$idx][1].'<br>');
    $taskIndex++;
}