将数组值填充到php中的特定键

时间:2016-02-29 13:23:23

标签: php arrays codeigniter arraylist functional-programming

我有如下所述的数组方式,希望将每个数组特定值填充到下一个重复键,直到第7个数字。

INPUT:

Array ( [0] => 2015-02-07 [1] => 2015-02-14 [2] => 2015-02-21 ) 预期输出:

例外输出就像

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

5 个答案:

答案 0 :(得分:1)

试试这个

<?php 

    $array =array('2015-02-07','2015-02-14','2015-02-21');
    $arr1='';
    foreach($array as $val)
    {
        for($i= 0; $i < 7; $i++)
        {
            $arr1[]=$val;
        }
    }
    echo "<pre>"; print_r($arr1);
?>

这将输出

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

答案 1 :(得分:1)

略过所有for ...foreach ...$i= ...$i< ...$i++while ...典礼并开始使用各种功能。

以下是使用array_reducearray_mergearray_fill执行此操作的功能方法。

$xs = ['2015-02-07', '2015-02-14', '2015-02-21'];

$result = array_reduce($xs, function($ys, $x) {
    return array_merge($ys, array_fill(0, 7, $x));  
}, []);

print_r($result);

输出

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

答案 2 :(得分:0)

你可以试试这个:

$arrayDestination = array();
foreach($arraySource as $value) {
    for ($i=0 ; $i<7 ; $i++) {
       $arrayDestination[] = $value;
    }      
}

答案 3 :(得分:0)

{{1}}

答案 4 :(得分:0)

$arrFirstArray = array(
'0'=>'2015-02-07',
'1'=>'2015-02-14',
'2'=>'2015-02-21',
);
$intFirstArray = count($arrFirstArray);

$arrSecondArray = array();

for($intI=0;$intI<$intFirstArray;$intI++)
{
for($intJ=0;$intJ<7;$intJ++){
    global $arrSecondArray;
    $arrSecondArray[]   = $arrFirstArray[$intI];
    }
}
echo '<pre>';
print_r($arrSecondArray);

这样可行。