2013-12-19 136 views
0

我有一個2維數組與30 +項目節點在以下格式。隨機miltidimentional陣列

$catalog= array(
    array(
     code => "ABC", 
     name => "Item name", 
     link => "domain.com/item121" 
    ), 
    array(
     code => "DEF", 
     name => "Another item name", 
     link => "domainB.com/item333" 
    ) 
); 

我需要執行以下操作:

    隨機化
  1. 陣列
  2. 顯示前5項連續
  3. 顯示其餘部分內每行的另一容器5個項目。

我只想顯示5個完整的行,沒有部分。所以,我算總筆數:

$items= count($catalog); 

那我算多少,顯示有5人完成行:

$showItems = floor($logosN/5) * 5; // num or rows * cnt per row 

我不知道怎麼做休息。我可以輸出物品而不會隨機化

echo '<div class="first5">'; 
    // 5 first items here 
echo '</div>'; 

echo '<div class="restItems">'; 
// rest items need to go here 

for ($x = 0; $x <= $showItems - 1; $x++) { 
    echo ' 
    <div class="item"> 
     <div class="item_'.$catalog[$x][code].'"></div> 
    </div>'; 
} 

echo '</div>'; 

需要一些幫助。謝謝。

+2

如果你能夠做到這一點而不會隨機化,只需調用'array_shuffle()'並使用相同的過程。 – Barmar

回答

0

我看了一下貼用戶對於shuffle PHP文檔的例子,發現了這個功能,這如果我正確地理解你的問題你想要做什麼:

參考:http://www.php.net/manual/en/function.shuffle.php#93214

<?php 
function twodshuffle($array) 
{ 
    // Get array length 
    $count = count($array); 
    // Create a range of indicies 
    $indi = range(0,$count-1); 
    // Randomize indicies array 
    shuffle($indi); 
    // Initialize new array 
    $newarray = array($count); 
    // Holds current index 
    $i = 0; 
    // Shuffle multidimensional array 
    foreach ($indi as $index) 
    { 
     $newarray[$i] = $array[$index]; 
     $i++; 
    } 
    return $newarray; 
} 
?> 

請注意,它只適用於二維數組。
另外請注意,它不會洗牌實際的內部數組元素,但只有洗牌外陣列,如果你知道我的意思如果我知道你想要什麼;)