1

我从数据库中检索了两个 fetch 数组,并尝试比较两个值直到它们匹配,但似乎很难弄清楚我哪里出错了。

这两个数据库最多有 2 个 jobrequestnumber 所以,匹配的数量应该是两个,但它只计算一个(如下所示)。

 $value1=array();
 $value2 =array();

 $queryfordispatch = "select jobrequestnumber from dispatch";
 $resultfordispatch = mysql_query($queryfordispatch);
 $valuefordispatch =mysql_fetch_array($resultfordispatch);
 $value1 = $valuefordispatch['jobrequestnumber'];

 $queryforjobrequest = "select jobrequestnumber from jobrequest";
 $resultforjobrequest = mysql_query($queryfordispatch);
 $valueforjobrequest =mysql_fetch_array($resultforjobrequest);
 $value2 = $valueforjobrequest['jobrequestnumber'];

 $cfd=count($valuefordispatch);
 $cfj=count($valueforjobrequest);

//在这个for循环中,如果我尝试回显$value1的值,它只会产生“1”的值

for($i=1; $i<=$cfd; $i++){
for($j=1; $j<=$cfj; $j++){
if ($value1 == $value2 ){

    $queryforupdate ="UPDATE jobrequest SET status = 'processed' where jobrequestnumber = $value2 ";
    mysql_query($queryforupdate);
  }
 }
}

所以我期望的结果是

作业编号

 1=1? yes --> update
 1=2? no  --> discard
 2=1? no  --> discard
 2=2? yes --> update
4

2 回答 2

0

让我们从这个开始:

欢迎来到堆栈溢出!请不要mysql_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

至于找出两个数组之间的差异,总是可以使用array_diff

<?php
//Example #1 array_diff() example
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);

print_r($result);
?>

$array1 中的多次出现都以相同的方式处理。这将输出:

Array
(
    [1] => blue
)

但是,要分别比较每个值,您需要同时遍历两个数组(for最好使用循环),并比较每个项目。这就是你已经在做的事情。

于 2013-06-06T16:43:16.530 回答
0

如果您要查看 array1 和 array2 是否共享值,请使用类似的东西。

$a = array('1','2','3','4','5','6','7','8','9');
$b = array('A','B','C','4','5','6','7','E','F');
$num_shared = 0;

foreach($a as $key => $val) {
    if (in_array($val, $b)) {
        echo $val . '<br />';
        $num_shared++;
    }
}

echo '<strong>'. $num_shared . '</strong>';
于 2013-06-06T16:39:29.253 回答