PHP循环系统的帮助

PHP循环系统的帮助,php,Php,嘿,我有一组从数据库返回的结果,它们是代表1-18的数字,这是车手id,它可以返回任何数量的车手,这取决于有多少车手从比赛中退役。然后,我将它们匹配到用户驱动程序,如果它们匹配,则从用户点到-10点 如果它们不匹配,则为+5分。如果查询根本不返回set,那么我知道用户的四个驱动程序可以是每个+5个点,但是如果它返回5行,那么我如何循环这些行并匹配它们呢?如果没有匹配项,则向该drivers变量添加+5个点,但必须在对所有结果集进行比较之后添加,因为该驱动项可能与$row中的下一行匹配。非常感谢您

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

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

p、 s结果集中的每个驱动程序id都是唯一的,因此 如果为true,则驱动程序id将不会再次出现

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


谢谢

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

mysql\u fetch.*
将在每次调用中返回一行,即一个退休驱动程序的ID。您需要先将它们收集到一个数组中,然后才能在\u array中使用

while ($retired_driver = mysql_fetch_array($results))
{
    $retireddrivers[] = $retired_driver['driver_id'];
}

此外,如果你能处理它,我会考虑把驱动程序1-4也放进一个数组中。那你就可以像这样做了

// 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'];
    }
}

大大减少了代码的重复。

能否在数组中使用上述变量名与数组内容进行比较。能否告诉我们$driver1、$driver2等的位置。。。来自哪里?非常感谢!我刚刚遇到了如何有效地循环优化代码的问题。这给了我一个有用的见解!再次感谢。那么现在每个$driver和每个drivers ID的点数都在一个数组中?是的..每个driver的ID和点数被捆绑在一个数组中
$drivers[0]['id']
将是第一个驱动程序的id,
$drivers[0]['points']
将是他们的积分。如果您想要清理这些内容,那么数组将是转换为驱动程序类的很好的候选对象,但目前数组工作得还不错。
// 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'];
    }
}