2016-02-29 3 views
0

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

ВХОД:

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 )

ответ

1

Try This

<?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 
) 
+0

Большое спасибо Manjeet Барнала .... – Sundar

+0

его прекрасно работает – Sundar

+0

приветствовать дорогие .. !! –

0

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

$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); 

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

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 
) 
+0

да, его очень хороший альтернативный способ без использования Foreach и для цикла. Спасибо naomik .. – Sundar

+0

@Sundar вы могли бы попытаться забыть, что 'foreach',' for' и 'while' даже существуют. A + Очень рекомендуется. – naomik

+0

ОК .... спасибо за информацию ... – Sundar