2015-12-18 81 views
0

我正在努力處理循環中的一些循環。我想在$ items數組的每個3項之後輸出$ additional數組的一個增量項。另外,當我們到達$ items數組中的item-15時,我想再使用$ additional數組再次從extra-1開始。數組項與循環的組合


$items = array(
    "item-1", 
    "item-2", 
    "item-3", 

    "item-4", 
    "item-5", 
    "item-6", 

    "item-7", 
    "item-8", 
    "item-9", 

    "item-10", 
    "item-11", 
    "item-12", 

    "item-13", 
    "item-14", 
    "item-15", 
); 

$additional = array(
    "extra-1", 
    "extra-2", 
    "extra-3", 
    "extra-4", 
); 

在最後我想用這樣的事情結束了:

 
    "item-1", 
    "item-2", 
    "item-3", 
"extra-1", 
    "item-4", 
    "item-5", 
    "item-6", 
"extra-2", 
    "item-7", 
    "item-8", 
    "item-9", 
"extra-3", 
    "item-10", 
    "item-11", 
    "item-12", 
"extra-4", 
    "item-13", 
    "item-14", 
    "item-15", 
"extra-1" 

我在不同的櫃檯組合嘗試了一些東西,不同的循環機制(for,和的foreach時)。

任何幫助表示讚賞!

+0

我很困惑你正在尋找什麼樣的輸出。爲什麼不只是'$ items + = $ additional;'? – Lando

+0

Hi @Landen。簡而言之:我想輸出$ item附加數組的一個項目,其中3個項目是$ items數組。 – Thijs

回答

1

下面的代碼做這項工作:

$length = count($items); 
$additionalLength = count($additional); 
for ($i = 1; $i <= $length; ++$i) { 
    echo $items[$i - 1] . "\n"; 
    if ($i % 3 === 0) { 
     echo $additional[(($i/3) - 1) % $additionalLength] . "\n"; 
    } 
} 
+0

哇謝謝伊霍! – Thijs

0

這裏是我的解決方案,很醜陋,但它的工程!

$counter = 0; 
$first_value = 0; 
foreach ($items as $values) { 
    $temp[] = $values; 
    $counter++; 
    if ($counter % 3 == 0 && count($additional) != 0) { 
     $first_value ? $temp[] = array_shift($additional) : $extra1 = array_shift($additional); 
     $first_value ?: $temp[] = $extra1; 
     $first_value = 1; 
    } 
} 
$temp[] = $extra1;