PHP随机选择选项的顺序

时间:2013-11-01 16:52:23

标签: php

我的页面中有以下选择选项,我想按顺序随机化。

<select class="selectpicker1 show-menu-arrow span2" onchange="updatePreview();">
    <option data-content="<img src='img/render/3-thumb.jpg'>" value="3.jpg">three</option>
    <option data-content="<img src='img/render/5-thumb.jpg'>" value="5.jpg">five</option>     
    <option data-content="<img src='img/render/1-thumb.jpg'>" value="1.jpg">one</option>
    <option data-content="<img src='img/render/2-thumb.jpg'>" value="2.jpg">two</option>
    <option data-content="<img src='img/render/4-thumb.jpg'>" value="4.jpg">four</option>   
    <option data-content="<img src='img/render/6-thumb.jpg'>" value="6.jpg">six</option>  
    <option data-content="<img src='img/render/7-thumb.jpg'>" value="7.jpg">six</option>    
  </select>

到目前为止,我有以下代码,但它不起作用,这是随机化订单的最简单方法吗?并且代码有问题吗?

<?php 
  $options=array( '<option data-content="<img src="img/render/3-thumb.jpg">" value="3.jpg">three</option>', 
  '<option data-content="<img src="img/render/5-thumb.jpg">" value="5.jpg">five</option>', 
  '<option data-content="<img src="img/render/1-thumb.jpg">" value="1.jpg">one</option>'); 
  shuffle($options); 
  echo '<select class="selectpicker1 show-menu-arrow span2" onchange="updatePreview();">'; 
  foreach ($options as $picker) { 
  echo '$picker'; } 
  echo '</select>'; ?>

3 个答案:

答案 0 :(得分:5)

变量在单引号内时不进行插值。

echo '$picker'; } 

应该只是:

echo $picker; } 

此外,为了修复HTML标记,您可以简单地转义引号,如下所示:

'<option data-content=\'<img src="img/render/3-thumb.jpg">\' 
value="3.jpg">three</option>'

而且,为了缩短这一点,您可以使用简单的implode()语句替换foreach循环,如下所示:

shuffle($options); 
echo '<select class="selectpicker1...">';
echo implode("\n", $options); 
echo '</select>'; 

Demo!

答案 1 :(得分:0)

我们的代码有两个问题。

您的代码首先出现的问题是数组
使用方法:

$options=['data1','data2','data3'];

$options=array('data1','data2','data3')

你的代码错误的第二件事是字符串输出(我认为只适用于mysql)
使用方法:

echo $var;

echo '$var';

答案 2 :(得分:0)

简单选项:

您的每个选项在数组中编码如下:

'<option data-type="<img src=\"img/render/5-thumb.jpg\">" value="5.jpg">five</option>'

将您的foreach语句替换为内爆语句echo implode('', $options);

更复杂的选项

在数组中对每个选项进行编码,如下所示:

$options = array(
                array('img/render/5-thumb.jpg', '5.jpg'. 'five'),
                array('img/render/3-thumb.jpg', '3.jpg'. 'three'),
                array('img/render/1-thumb.jpg', '1.jpg'. 'one')
            );

然后将您的foreach语句替换为:

foreach ($options as $option) {
    echo '<option data-type="<img src=\"'.$option[0].'\">" value="'.$option[1]'">'.$option[2].'</option>';
}