Заполнить значение массива для определенных ключей в переполнении стека

У меня есть массив, как указано ниже, хочу заполнить каждое конкретное значение массива до следующих повторяющихся ключей до 7 числа.

ВХОД:

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
)

0

Решение

Попробуй это

<?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

Другие решения

Пропустить все for ..., foreach ..., $i= ..., $i< ..., $i++, while ... церемония и начать использовать функции.

Вот функциональный способ сделать это с помощью array_reduce, array_merge, а также array_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
)
1

Вы можете попробовать это:

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

You can do something like this -

$arr = Array
(
'0' => '2015-02-07',
'1' => '2015-02-14',
'2' => '2015-02-21'
);  //Input the array
$j = 0;
foreach($arr as $k=>$v) {
$i = 0;
while ($i < 7){
$arr_final[$j] = $v;
$i++;$j++;
}
}
print_r ($arr_final); //display output
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);

Это будет работать

0
По вопросам рекламы [email protected]