确定两个数组中的键值是否相等,然后更新它们

时间:2012-11-17 16:42:42

标签: php

我已经将PHP编程作为下班后和孩子们的业余爱好。所以,如果这段代码是伪造的,我的抱怨......但我一直在寻找一段时间。无论如何,我试图比较两个数组中的值和...其中每个键值等于另一个我想将该值更新为' 1'。因此,例如,在一个数组中,值是(2,4,1),第二个是(3,4,5)。之后,我的sql列中的值将更新为(2,1,1)。这是我的代码。感谢您的任何帮助!

$array1 = mysql_fetch_array($x);
$array2 = mysql_fetch_array($x1);

foreach($array1 as $key => $value)
{
if($value == $array2[$key])
{
   $v = "UPDATE fXnumber SET xnumber = '1'";
   mysql_query($v);
}


}

3 个答案:

答案 0 :(得分:0)

检查更新记录将更新的标识符的表集ID时

$array1 = mysql_fetch_array($x);
$array2 = mysql_fetch_array($x1);

foreach($array1 as $key => $value)
{
    if (isset($array2[$key]) && $value == $array2[$key])
    {
       $v = "UPDATE fXnumber SET xnumber = 1 WHERE id = '{$key}'";
       mysql_query($v);
    }
}

答案 1 :(得分:0)

这是您的代码版本,具有增强的可重用性。我添加了一个(当前无效的)'WHERE'子句。我假设您建议的版本中的sql语句不仅按预期和期望更新数据库表中的单个值,而且还更新该表内的_all值。您很可能希望指定要更新的条目:

$array1 = mysql_fetch_array($x);
$array2 = mysql_fetch_array($x1);

foreach(array_keys($array1) as $key) 
{
    if ( $array1[$key]==$array2[$key] ) 
    {
        $v = sprintf("UPDATE fXnumber SET xnumber=1 WHERE id=%s", $key);
        mysql_query($v);
    }
}

另一个提示:phps旧的mysql扩展名是折旧的。它有很多问题。考虑使用较新的mysqli扩展,或者更好的是,使用PDO抽象层。它可以保护您免受代码注入等。

答案 2 :(得分:-1)

对于数组比较array_diff可能会有所帮助。