php - 如何在php数组中按规律推送元素

标签 php arrays

我有一个帖子 id 数组和一个视频 id 数组。我需要将两者混合起来,得到类似“首先是一个视频,然后是 3 个普通帖子,然后是另一个视频,然后是 5 个普通帖子......重复......直到最后。(即:视频,正常,正常,正常,视频,正常*5 并重复..)

我的代码可以工作,但我怎样才能使它更加干净和简洁?

$a1 = $video_posts_arr;
$a2 = $standard_posts_arr;

$res = [];

$tc1 = count($a1);
$tc2 = count($a2);

$tc = $tc1 + $tc2;

$i1 = 0;
$i2 = 0;

for ($i = 0; $i < $tc; $i++) {
    // first video
    if (isset( $a1[$i1] )) {
      array_push($res,$a1[$i1]);
      $i1++;
    }
    // next 3 normals
    if (isset( $a2[$i2]) ) {
      array_push($res,$a2[$i2]);
      $i2++;
      array_push($res,$a2[$i2]);
      $i2++;
      array_push($res,$a2[$i2]);
      $i2++;
    }
    // next video
    if (isset( $a1[$i1] )) {
      array_push($res,$a1[$i1]);
      $i1++;
    }
    // next 5 normals
    if (isset( $a2[$i2]) ) {
        array_push($res,$a2[$i2]);
        $i2++;
        array_push($res,$a2[$i2]);
        $i2++;
        array_push($res,$a2[$i2]);
        $i2++;
        array_push($res,$a2[$i2]);
        $i2++;
        array_push($res,$a2[$i2]);
        $i2++;
    }
}```

最佳答案

从你的措辞中很难看出,但我假设你想在 3 个“常规”帖子之间来回切换,然后是 5 个、然后 3 个,等等,在每个“视频”帖子之间。因此,当我们循环浏览视频帖子时,我们必须在这些选项之间来回切换,然后使用它加上标记/计数器来知道在常规帖子列表中将每个视频帖子插入到哪里。

$a1 = array("v1", "v2", "v3", "v4", "v5");
$a2 = array("p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", "p16");

$skipNum = 3;
$currentPos = 1;

array_unshift($a2, array_shift($a1));

foreach($a1 as $v)
{
    $currentPos+= $skipNum;
    array_splice($a2, $currentPos, 0, $v);
    $currentPos++;

    if($skipNum == 3)
    {
        $skipNum = 5;
    }
    else
    {
        $skipNum = 3;
    }
}

var_dump($a2);

DEMO

关于php - 如何在php数组中按规律推送元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59382588/

相关文章:

php - spatie/laravel-medialibrary 更改主键

c - printf 根据输入在 C 中打印意外的多维数组的最后一个元素?

php - Docker:phpize找不到config.m4

php - 关闭数据库句柄

c - 如何扫描值并忽略字符

arrays - 如何初始化@Binding SwiftUi

javascript - Lodash remove 根据 id 属性从数组中删除一个对象

c++ - 如何找出数组的长度?

javascript - 在 jQuery 中执行 PHP 代码

php - 在 php 代码错误中从 url 获取#var