本帖最后由 mumubangditu 于 2011-07-10 08:25:10 编辑

解决方案 »

  1.   

    怎样才能混合显示呢?换了一种方法,用shuffle还是不能把次序给打乱。依旧是15个f1()先显示,再10个f2()显示,最后5个f3()显示。求助。
    for ($i = 0; $i < 15; $i++) {
      $f1 .= f1();
    }
    for ($i = 0; $i < 10; $i++) {
      $f2 .= f2();
    }
    for ($i = 0; $i < 5; $i++) {
      $f3 .= f3();
    }
    $newarray = array($f1,$f2,$f3);
    echo shuffle($newarray);
      

  2.   

    f1()、f2()、f3()三个函数中的$row变量都是局部变量,你得传递进去才行,随机显示的问题,这样试试:
    function f1($row){
    echo '<p style="width:100px;height:20px;float:left;background:#999 none;">'.$row['word'].'</p>';
    }
    function f2($row){
    echo '<p style="width:200px;height:20px;float:left;background:#ccc none;">'.$row['word'].'</p>';
    }
    function f3($row){
    echo '<p style="width:300px;height:20px;float:left;background:#eee none;">'.$row['word'].'</p>';
    }echo '<div style="width:1000px;height:200px;background-color:#333;">';for($i = 0; $i < 15; $i ++) $sizes[] = f1($row);
    for($i = 0; $i < 10; $i ++) $sizes[] = f2($row);
    for($i = 0; $i < 5; $i ++) $sizes[] = f3($row);
    shuffle($size);for($i = 0; $i < 30; $i ++) echo $sizes[$i];
      

  3.   

    shuffle($size); //数组变量名打错了,改为shuffle($sizes);
      

  4.   

    你这么写当然不行!
    你的 f1、f2、f3 函数中都是 echo,只要执行到,就已经输出了。
      

  5.   

    对啊
    还有,原来写的代码中$f1、$f2、$f3赋的都是array_push()的返回值,这个函数返回的是新的数组元素数量,对楼主的需求来说是没有意义的。
      

  6.   

    T5500 ,还是无法混合啊,把
    <?php
    function f1()
    {
    echo "<p class=position1 style=\"float:left;width:100px;height:10px;background:#999 none;\"></p>";
    }
    function f2()
    {
    echo "<p class=position2 style=\"float:left;width:100px;height:20px;background:#ccc none;\"></p>";
    }
    function f3()
    {
    echo "<p class=position3 style=\"float:left;width:100px;height:30px;background:#eee none;\"></p>";
    }echo '<div id="display" style="width:1000px;height:200px;background-color:#333;">';
    for($i = 0; $i < 15; $i ++) $sizes[] = f1($row);
    for($i = 0; $i < 10; $i ++) $sizes[] = f2($row);
    for($i = 0; $i < 5; $i ++) $sizes[] = f3($row);
    shuffle($sizes);
    for($i = 0; $i < 30; $i ++) echo $sizes[$i];echo '</div>';
    ?>
    把P里的文字改成颜色,看的清楚点。结果还是1大块1大块的。
    我要的效果是三种p的30个小块随机混合在一起。谢谢。
      

  7.   

    那应该怎么改?不用function,直接赋值? “shuffle() expects parameter 1 to be array。”
    <?php
    $f1 .="<p class=position1 style=\"float:left;width:100px;height:10px;background:#999 none;\"></p>";
    $f2 .="<p class=position2 style=\"float:left;width:100px;height:20px;background:#ccc none;\"></p>";
    $f3 .="<p class=position3 style=\"float:left;width:100px;height:30px;background:#eee none;\"></p>";echo '<div style="width:1000px;height:200px;background-color:#333;">';for($i = 0; $i < 15; $i ++) $sizes[] = $f1;
    for($i = 0; $i < 10; $i ++) $sizes[] = $f2;
    for($i = 0; $i < 5; $i ++) $sizes[] = $f3;
    shuffle($size);for($i = 0; $i < 30; $i ++) echo $sizes[$i];
    ?>
      

  8.   

    function f1($row){
    echo '<p style="width:100px;height:20px;float:left;background:#999 none;">'.$row['word'].'</p>';
    }
    function f2($row){
    return '<p style="width:200px;height:20px;float:left;background:#ccc none;">'.$row['word'].'</p>';
    }
    function f3($row){
    return '<p style="width:300px;height:20px;float:left;background:#eee none;">'.$row['word'].'</p>';
    }echo '<div style="width:1000px;height:200px;background-color:#333;">';$sizes = array();
    for($i = 0; $i < 15; $i ++) $sizes[] = f1($row);
    for($i = 0; $i < 10; $i ++) $sizes[] = f2($row);
    for($i = 0; $i < 5; $i ++) $sizes[] = f3($row);
    shuffle($sizes);for($i = 0; $i < 30; $i ++) echo $sizes[$i];
      

  9.   

    测试
    $ar = array_merge(array_fill(0,15,100), array_fill(0,10,200), array_fill(0,5,300));
    shuffle($ar);foreach($ar as $k=>$v)
      echo "<p style='width:{$v}px;height:20px;float:left;background:#999 none;'>$k</p>";