加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 显示来自一个数组的前4个元素和来自另一个数组的前1个元

发布时间:2020-12-13 16:04:02 所属栏目:PHP教程 来源:网络整理
导读:我试图通过显示第一个数组中的4个第一个元素和第二个数组中的1个第一个元素来创建第三个数字数组,依此类推. 例: A1 { 1,2,3,4,5,6,7,8,9,10,21,22,23,24,25 }A2 {11,12,13,14,15,16,17,18,19,20 } 结果应该是: A3 { 1,11,... } └───┬────┘ ↑↑
我试图通过显示第一个数组中的4个第一个元素和第二个数组中的1个第一个元素来创建第三个数字数组,依此类推.

例:

A1 { 1,2,3,4,5,6,7,8,9,10,21,22,23,24,25 }
A2 {11,12,13,14,15,16,17,18,19,20 }

结果应该是:

A3 { 1,11,... }
     └───┬────┘  ↑↑  └───┬────┘  ↑↑  └─────┬─────┘  ↑↑
         A1      A2      A1      A2        A1       A2

现在我尝试了这段代码,但它没有显示第二个数组中的所有元素.

<?php

    $array = array(1,10);
    $array2 = array(11,20);

    $temp = 0;

    foreach ($array as $key => $item)
    {
        echo $item;

        if(($key+1) % 4 == '0')
        {
            echo $array2[$temp];
            $temp++;
        } 
    }


?>

解决方法

说明

在这里,我首先将第一个数组分为4个元素的每个部分,第二个部分为1个部分,分别为array_chunk(),如下所示:

//Array one
Array (
    Array (
        //4 array elements
    )
    //...
)

//Array two
Array (
    Array (
        //1 array elements
    )
    //...
)

然后你可以使用array_map()一次遍历两个数组,并将这两个数组与array_merge()合并在一起.由于两个数组中的元素数量可能不均匀,我只需检查is_array(),如果我们仍然有一个包含要合并的元素的数组或如果我们必须为array_merge()使用一个空数组.

所以在array_map()之后我们得到一个二维数组,每个subArray包含来自第一个数组的4个元素和来自第二个数组的1个元素,如下所示:

//Array
Array (
    Array (
        //4 array elements from array one
        //1 array elements from array two
    )
    //...
)

然后我们可以使用call_user_func_array()结合array_merge()将所有元素作为一维数组.

<?php

    $array = array(1,20);

    $result = call_user_func_array("array_merge",array_map(function($arrayOne,$arrayTwo){
        return array_merge(is_array($arrayOne) ? $arrayOne : [],is_array($arrayTwo) ? $arrayTwo : []);
    },array_chunk($array,4),array_chunk($array2,1)));


    print_r($result);

?>

输出:

Array (
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 11
    [5] => 5
    [6] => 6
    [7] => 7
    [8] => 8
    [9] => 12
    [10] => 9
    [11] => 10
    [12] => 13
    [13] => 14
    [14] => 15
    [15] => 16
    [16] => 17
    [17] => 18
    [18] => 19
    [19] => 20
)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读