首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP循环系统的帮助

PHP循环系统的帮助
EN

Stack Overflow用户
提问于 2011-09-22 12:05:58
回答 1查看 107关注 0票数 0

嘿,我有一组从数据库中返回的结果,它们是代表1-18的数字,这是drivers_id,它可以返回任意数量的取决于有多少车手从一场比赛中退休。然后,我将它们与用户驱动程序进行匹配,如果它们匹配,则从用户点到-10分。

如果他们不匹配,那么到+5分。如果查询根本不返回set,那么我知道用户--四个驱动程序--每个可以是+5个点,但是如果它返回5行,那么我如何循环遍历这些驱动程序并匹配它们呢?如果没有匹配,则向该驱动程序变量添加+5分,但必须在所有结果集进行比较之后,因为该驱动程序可能与$row中的下一行匹配。非常感谢你提供的帮助!

p.s结果集中的每个driver_id都是唯一的,因此一旦比较为真,那么driver_id就不会再次出现。

代码语言:javascript
复制
$results = mysql_query("SELECT drivers_id FROM results_retired WHERE drivers_id IN ('$driver1', '$driver2', '$driver3', '$driver4') AND track_id = '$track'") or die ("Failed to update" . mysql_error());

$retireddrivers = mysql_fetch_array($results)

if(in_array($driver1, $retireddrivers)){
  $driveronepoints -= $driver_points_system["retired"];
}
else {
  $driveronepoints += $driver_points_system["completion"];
}
if(in_array($driver2, $retireddrivers)) {
  $drivertwopoints -= $driver_points_system["retired"];
}
else {
  $drivertwopoints += $driver_points_system["completion"];
}
if(in_array($driver3, $retireddrivers)) {
  $driverthreepoints -= $driver_points_system["retired"];
}
else {
  $driverthreepoints += $driver_points_system["completion"];
}
if(in_array($driver4, $retireddrivers)) {
  $driverfourpoints -= $driver_points_system["retired"];
}
else {
  $driverfourpoints += $driver_points_system["completion"];
}

我现在对代码做了一些修改,in_array函数可以在这个实例中使用吗??

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-23 00:03:02

看起来,您缺少了行与列的概念。

mysql_fetch_*将返回一行--也就是退休司机的ID之一--每一次调用。在使用in_array之前,您需要将它们收集到一个数组中。

代码语言:javascript
复制
while ($retired_driver = mysql_fetch_array($results))
{
    $retireddrivers[] = $retired_driver['driver_id'];
}

此外,如果您能够管理它,我也会考虑将驱动程序1-4放入数组中。然后你就可以像

代码语言:javascript
复制
// Ideally, $driver[1-4]* won't exist at all -- you'd pull the info from the DB,
// or from the form, and stuff it directly into the array.
// This code right here is just to make existing code work
$drivers = array(
    array('id' => $driver1, 'points' => &$driver1points),
    array('id' => $driver2, 'points' => &$driver2points),
    array('id' => $driver3, 'points' => &$driver3points),
    array('id' => $driver4, 'points' => &$driver4points),
);

foreach ($drivers as $driver)
{
    if (in_array($driver['id'], $retireddrivers))
    {
        $driver['points'] -= $driver_points_system['retired'];
    }
    else
    {
        $driver['points'] += $driver_points_system['completion'];
    }
}

大大减少代码的重复。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7514469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档