0

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

<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>'; ?>
4

3 回答 3

5

变量在单引号内时不会插入。

echo '$picker'; } 

应该只是:

echo $picker; } 

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

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

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

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

演示!

于 2013-11-01T16:55:00.677 回答
0

好吧,我们的代码有两点错误。

您的代码的第一件事是数组
使用:

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

不是:

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

您的代码的第二个问题是字符串输出(我认为仅适用于 mysql)
使用:

echo $var;

不是

echo '$var';
于 2013-11-01T17:15:40.503 回答
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>';
}
于 2013-11-01T17:19:11.920 回答