2013-07-13 132 views
0

我有下面的PHP代碼: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刪除了第三張發票,但是如果我刪除了第二張發票,我將有數組[1]輸出$ missing

答案是做一個循環,這樣我就可以在printf中找到$ missing [ $ loop],

其中循環正在搜索一個或兩個發票刪除..並輸出1或2行。

說起來容易,很難做到,當你是一個初學者,你想要做誰使用Excel的:)

如果你能提供一些例子,或者一些鏈接到一些朋友一個簡單的發票系統文檔,你可以幫我一個忙。謝謝

+0

考慮從你的問題消除不必要的代碼。那麼你會得到很好的答案。 – Red

+0

所以你想要代碼循環$ missingvalue和打印使用prinf權利? –

+0

@saranbanerjee:偶數回聲是好的,不僅是printf,而且輸出是從一個循環中得到所有缺少的數字。 – Leon

回答

3

這樣做:

foreach($missingvalue as $key => $value) 
{ 
    printf('WARNING: The invoice '.$value.' is missing.'); 
} 
+0

謝謝您的回答薩蘭。我有和另一個例子相同的輸出。嘗試一切可能性,它不工作。我認爲問題是我有一個循環與while函數,現在我做另一個只取第一個值。 Boh,這是我的知識,但我會盡量挖掘一下,並深入foreach功能。 – Leon

+0

你能說出做完foreach後出現什麼錯誤嗎? –

+0

做了一些修改,並採取與print_r一步一步,並檢查代碼...並且在我測試之後,您的代碼似乎按預期工作。謝謝大家的所有偉大的答案。 謝謝saran banerjee – Leon

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.'); 
+0

,即使我糾正$失蹤,有$缺失值的第一個例子,也給我一些錯誤,然後刪除[0],總有一些錯誤...並不重要,因爲我可以有不止一個發票丟失.. 在用foreach第二個例子 ,即將50%..問題是,與刪除發票3是給我3丟失,但如果我刪除第二個是隻給我2缺少...但正在工作 – Leon

+0

第一種情況下的錯誤是什麼? –

+0

解析錯誤:語法錯誤,在第51行/var/www/../index2.php出現'[',期待']',然後如果我刪除[0] - 警告:/ var/www中的非法偏移類型/../index2.php第51行 – Leon