0

私は次のphpコードを持っています:

$range=range(1,$count);
$value=implode(",",$range);
$query1="SELECT DISTINCT numar_factura FROM creeazafactura WHERE numar_factura IN ($value)";
$result1=mysql_query($query1);

while ($rowx = mysql_fetch_assoc($result1)) {
    $getvalue[]=$rowx['numar_factura'];
}
$missingvalue = array_diff($range,$getvalue);

print_r($range);
print_r($getvalue);
print_r($missingvalue);

出力で:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

Array
(
    [0] => 1
    [1] => 2
)

Array
(
    [2] => 3
)

私が理解しようとしているのは、次の行になるようにする方法です

printf("WARNING: The invoice $missing[2] is missing.");

常に動作します。なぜ私はいつも言っているのですか?ID が 3 番目の請求書を削除したため、2 番目の請求書を削除すると、配列 [1] が $missing に出力されます。

答えは、printf に $missing[$loop] が含まれるようにループを作成することです。

ループは削除された 1 つまたは 2 つの請求書を検索し、1 行または 2 行を出力します。

言うは易く行うは難し、あなたが初心者で、エクセルを使っている友人のために簡単な請求書システムを作りたい時:)

いくつかの例、またはいくつかのドキュメントへのリンクを提供していただければ、大変助かります。ありがとうございました

4

2 に答える 2

3

これを行う:

foreach($missingvalue as $key => $value)
{
    printf('WARNING: The invoice '.$value.' is missing.');
}
于 2013-07-13T13:39:10.290 に答える
0

したがって、不足している請求書の ID を取得することが目的です。これを試して:

// here's your missing invoice array
$missingvalue = array_diff($range,$getvalue);
// get keys of it
$missingvalue_keys = array_keys($missingvalue);
// and now get the value from $missingvalue by key from $missingvalue_keys
printf('WARNING: The invoice ' . $missing[$missingvalue_keys[0]] . ' is missing.');

// if you have multiple values in $missingvalue than you dont need keys
foreach ($missingvalue as $value)
    printf('WARNING: The invoice ' . $value . ' is missing.');
// or with implode
printf('WARNING: The invoices ' . implode(',', $missingvalue) 
        . ' are missing.');
于 2013-07-13T13:03:13.693 に答える