Php 在订单中选择数字

Php 在订单中选择数字,php,arrays,sorting,Php,Arrays,Sorting,我的任务是使用jquery幻灯片而不是动画脚本从mysql数据库中滑动图像。这张幻灯片应该至少显示最近上传的十张图片。我首先写了一个随机查询 mysql_query("select * from tblname order by rand() limit 1); 但正如所料,它会随机挑选图片,而不管它是在什么时候发布的,当然这不是最近的十张。经过一番思考之后,我现在必须首先运行一个查询来获取最近的十个 mysql_query("select * from tblname order by ID

我的任务是使用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";
我试着像处理数组一样处理它,但它没有给出任何积极的结果,因此我遇到了一个问题,即如何选择这些数字并将其用于幻灯片

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

for($i=0;$i<count($myArr);$i++)
{
    echo $myArr[$i];
}
编辑2:请参见下面关于循环的效率与意外结果的评论。:)

将字符串拆分为数组

1)将字符串分解为数组,按逗号拆分

2) 你没有说你是想把数字重新排序成数字顺序,还是按照它们已经存在的顺序来处理它们。如果是前者,则使用
sort($arr)对数组进行排序

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

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

您可以使用php函数来实现这一点

$pieces=爆炸(“,”,$var)

echo$pieces[0];//第一件

echo$pieces;//第二件


echo$pieces[n];//作品n根据你的评论,我将在组合中提供我的2p

这就是我所做的$slided=“23,22,24,34,27,78,56,87,98,55”$啊= 分解(“,”,$slideid);foreach($arr as$val){//让我们获取 来自post$rs=mysql\u查询(“SELECT*fromtblname”)表单的变量 其中id='$val')或die(mysql_error()); 而($row=mysql_fetch_array($rs)){echo”“;} }使用jquery幻灯片逐个显示图像

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

$slideid=“23,22,24,34,27,78,56,87,98,55”;
$rs=mysql_查询(“从tblname中选择*,id位于({$slideid})”中)或死(mysql_error());
while($row=mysql\u fetch\u assoc($rs))
{
回声“;
}

我希望这会有所帮助,我想你需要得到关于变量顺序的顺序结果

$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']}' />";
}
$slideid=“23,22,24,34,27,78,56,87,98,55”;
$rs=mysql_query(“按字段(id,{$slideid})顺序从tblname中按id({$slideid})选择*”)或die(mysql_error());
while($row=mysql\u fetch\u assoc($rs))
{
回声“;
}

您想对这些数字做些什么?将它们填入一个数组(您可以使用explode),然后对数组进行排序?@Utkanos请使用numbers@DimgbaKalu您是否需要对它们进行排序-即首先排序最低?我认为这与mysql更相关,您可以尝试类似于({$var})中id_列所在的表中的
SELECT*
foreach
在这种情况下速度更快。如果您在大多数情况下不被迫使用
for
循环,最好在PHP中使用
foreach
。@PLB您能给我一个for…each的实例吗statement@Fluffeh:如果他想保证它处于有序状态,他应该使用for循环,foreach依赖于内部指针的更改,有时可能导致意外行为。@Fluffeh这就是我所做的$slideid=“23,22,24,34,27,78,56,87,98,55”$arr=分解(',',$slideid);foreach($arr as$val){//让我们从post$rs=mysql_query(“SELECT*fromtblname,其中id='$val'))或die(mysql_error())的形式获取变量;而($row=mysql_fetch_array($rs)){echo”“;}则使用jquery逐个显示图像slide@DimgbaKalu这里真的很晚了,我要去睡觉了。如果这解决了你的问题,请接受答案,否则我会在早上看一看,或者其他人会添加评论或编辑我的帖子。你应该使用
1。
2。
(而不是
1)
2)
)为了获得更好的排序列表,这将如何按照海报的要求将它们从低到高排序?$sortedData=sort($pieces,sort\u NUMERIC);这就是我所做的$slided=“23,22,24,34,27,78,56,87,98,55”$arr=分解(',',$slideid);foreach($arr as$val){//让我们从post$rs=mysql_query(“SELECT*from tblname,其中id='$val'))或die(mysql_error())的形式获取变量;而($row=mysql_fetch_array($rs)){echo”“;}在回复中使用jquery slideBuilding逐个显示图像,我完全同意,您可以将SQL编写为
SELECT*FROM tblname WHERE id({$slideid})order by id
,这几乎可以完成从开始到结束的技巧+1来自我。@Fluffeh欢呼,伙计们非常感谢,我认为这个问题很容易误导,现在我回到这个问题上来,无论是通过php还是mysql攻击,每个人都回答了大致相同的问题,提问者问了错误的问题@是的,这绝对有帮助。然而,它一次显示了所有的图像,所以我不得不按兰德公司的顺序,一次只能显示一张。。。
$str = '1,2,3,4,5,6';
$arr = explode(',', $str);
foreach($arr as $num) echo $num.'<br />';
$arr = preg_split('/, ?/', $str);
$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']}' />";
}
$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']}' />";
}