$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
.......
请帮助我:)
答案 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以从中访问数组第一个指数。
$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++;
}