2014-05-02 29 views
-1

我有一個數據庫,每個條目包含幾位信息。我使用while語句來遍歷每一個,並顯示我稱之爲「圖」的數字,每個條目可以容納多個圖EG 111,222,333雖然數組中包含多個值的陳述

我需要做什麼我有while語句(或者可能更適用的另一種方法)來檢查每個條目認爲,地塊編號是否包含在我設置,然後顯示一個數組,以便信息 EG內:

while ($row = mysqli_fetch_array($aa, MYSQLI_ASSOC)) { 

    $plotsTotal1 = explode(" ", $row['exoutdoorspaceplottotals']); 
    $plotsTotal2 = array_filter($plotsTotal1); 
    //this gets info from DB. an example of the data would be: 
    //$plotsTotal2 = array(111, 555); 

    $test = array(111, 465, 555, 666, 777); 

    if (count(array_intersect($plotsTotal2, $test)) > 0) { 
    echo 'something'; <br/> 
    } 
} 

所以$ plotsTotal2是,如果3組合陣列。

作爲一個例子如果我有3個entrys的while語句將循環。 條目之一具有圖,111,222,465 條目2具有圖,666,123,412 條目3具有圖,000,999

while循環應該顯示一些信息(可能的名稱和情節每個條目),這樣的結果將是:

進入一個111222465 條目TWO 666,123,412

(條目中有三個沒有匹配的號碼等於是不顯示任何東西)

任何幫助挪用,希望我解釋一下這一切都沒問題。

伊恩

+0

這是一個有點不清楚你想要完成的任務。你能把這個代碼減少到一個非常小的例子嗎? (只需要證明你的問題,看看http://sscce.org) –

+0

是更好的嗎? – snookian

+0

array_filter需要一個函數,爲每個要保留的元素返回true。或者你只是篩選出0值? – TurboHz

回答

0

像這樣的事情? Tested herethis while version

$entries = array(
    "111 222 465", 
    "666 123 412", 
    "000 999", 
); 

$test = array(111, 465, 555, 666, 777); 

foreach ($entries as $key => $entry) { 
    $plotsTotal1 = explode(' ', $entry); 
    $plotsTotal2 = array_filter($plotsTotal1); 

    $matches = array_intersect($test, $plotsTotal2); 

    if (count($matches) > 0) { 
     echo 'Entry ' . $key. ' contains ' . implode(',', $matches) . "\n"; 
    } 
} 
+0

這只是顯示一個條目,例如有兩個entrys應該匹配測試數組中的內容,但它只顯示一個信息。 – snookian

+0

然後,我不清楚你想要什麼。我已經把一些[在線](http://3v4l.org/Oq0Cs) – netiul

+0

這就是我陷入困境。你的例子效果很好,但我不是像這樣手動創建$條目,我必須從數據庫中獲取它。我一直在使用一個while循環遍歷每一個,但我無法弄清楚如何在你的例子中工作 – snookian