1

データベースから取得した 2 つのフェッチ配列があり、一致するまで 2 つの値を比較しようとしましたが、どこが間違っていたのかを理解するのは少し難しいようです。

2 つのデータベースには最大 2 つの jobrequestnumber があるため、一致する数はおそらく 2 つですが、1 つしかカウントされません (以下に示されています)。

 $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

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 に答える
0

これから始めましょう:

スタック オーバーフローへようこそ! 新しいコードで関数を使用しないでくださいmysql_*。それらはもはや保守されておらず、公式に非推奨です赤いボックスが見えますか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを決定するのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

2 つの配列の違いを見つけることに関しては、いつでも使用でき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 に答える