У меня есть массив, как указано ниже, хочу заполнить каждое конкретное значение массива до следующих повторяющихся ключей до 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
)
Попробуй это
<?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
)
Пропустить все 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
)
Вы можете попробовать это:
$arrayDestination = array();
foreach($arraySource as $value) {
for ($i=0 ; $i<7 ; $i++) {
$arrayDestination[] = $value;
}
}
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
$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);
Это будет работать