随机化多维数组

时间:2013-12-19 21:17:14

标签: php arrays

我有一个2维数组,有30多个项目节点,格式如下。

$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个项目。
  4. 我只想显示完整的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>';
    

    需要一些帮助。感谢。

1 个答案:

答案 0 :(得分: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;
}
?>

请注意,它仅适用于二维阵列 另外,请注意,它不会改变实际的内部数组元素,只会改变外部数组,如果你知道我的意思是 ,如果我知道你想要的话, ; )