在订单中挑选数字

时间:2012-07-17 12:19:57

标签: php arrays sorting

我有一个任务是使用jquery幻灯片而不是动画脚本从mysql数据库中滑动图像。幻灯片应该至少显示最近上传的十张图片。有了这个我首先写了一个随机查询

mysql_query("select * from tblname order by rand() limit 1);

但正如预期的那样,它随意挑选图像,无论它何时被发布,当然它不是最近的十个。经过一番思考后,我现在必须先运行一个查询来获取最近的十个

mysql_query("select * from tblname order by ID limit 10);
while($row=mysql_fetch_array($sql){
    $slideid=$slideid.",".$row['recordid'];
}

这当然会导致此订单的变量

$var="23,22,24,34,27,78,56,87,98,55";

我尝试像数组一样处理它,但它没有给出任何正面结果,因此我遇到了如何选择这些数字并将其用于幻灯片的问题

6 个答案:

答案 0 :(得分:5)

$myArr=explode(',',$var);
sort($myArr);

for($i=0;$i<count($myArr);$i++)
{
    echo $myArr[$i];
}

编辑:为了更有效地使用:

$myArr=explode(',',$var);
sort($myArr);

foreach ($myArr as $val)
{
    echo $val;
    // Or do whatever else you want with each one.
}

编辑2:请参阅下面关于效率vs for循环与意外结果的评论。 :)

答案 1 :(得分:1)

$var="23,22,24,34,27,78,56,87,98,55";
$arr = explode(',',$var);
foreach ($arr as $val) {
   // work with $val
}

explode将字符串拆分为数组

答案 2 :(得分:1)

根据您的评论,我将提供我的2p混音

  

这就是我所做的$ slideid =“23,22,24,34,27,78,56,87,98,55”; $ arr =   爆炸( '',$ slideid); foreach($ arr as $ val){//让我们得到   表单中的变量$ rs = mysql_query(“SELECT * FROM tblname   WHERE id ='$ val'“)或die(mysql_error());   while($ row = mysql_fetch_array($ rs)){echo“&lt; img src ='image / $ image'&gt;”; }   使用jquery幻灯片

逐个显示图像

现在我认为我们正在浪费时间处理爆炸这个变量,因为mysql有漂亮的IN()函数(可能在其他数据库中我不知道)

$slideid = "23,22,24,34,27,78,56,87,98,55";
$rs = mysql_query("SELECT * FROM tblname WHERE id IN({$slideid})") or die(mysql_error());
while ($row = mysql_fetch_assoc($rs))
{
    echo "<img src='image/{$row['image']}' />";
}

我希望这会有所帮助

答案 3 :(得分:0)

1)将字符串分解为数组,并在逗号上分割。

2)您没有说是否要将数字重新排序为数字顺序,或者按照它们已经存在的顺序处理它们。如果是前者,请使用sort($arr);对数组进行排序

3)按顺序循环遍历数组并对每个数字执行某些操作

$str = '1,2,3,4,5,6';
$arr = explode(',', $str);
foreach($arr as $num) echo $num.'<br />';

请注意,如果逗号后有空格更改,则更好的选择是preg_split而不是explode,因为这更具动态性。

$arr = preg_split('/, ?/', $str);

答案 4 :(得分:0)

您可以使用php explode 功能

来实现此目的

$ pieces = explode(“,”,$ var);

echo $ pieces [0]; // piece1

echo $ pieces 1; // piece2

echo $ pieces [n]; //片段

答案 5 :(得分:0)

我认为你需要获得关于变量顺序的顺序结果

$slideid = "23,22,24,34,27,78,56,87,98,55";
$rs = mysql_query("SELECT * FROM tblname WHERE id IN({$slideid}) ORDER BY FIELD(id, {$slideid}) ") or die(mysql_error());
while ($row = mysql_fetch_assoc($rs))
{
    echo "<img src='image/{$row['image']}' />";
}