我在段落上做了一個preg_split
的單詞數組。我試圖將這些字詞與存儲在每個用戶個人資料中的已保存「關鍵字」進行比較。因爲我對這些詞做了foreach
,所以當多個人擁有相同的關鍵字時,我無法構建數組。在創建多維數組時創建的值將被跳過
數據庫包含以下內容。
id value
------+--------
8 frac
8 oil
8 trucks
9 mud
9 oil
9 tar
下面是我使用的查詢。
$allwords = preg_split("/(?<=\w)\b\s*/", $sentence);
$matches = array();
foreach ($allwords as $word) {
$result = db_query('SELECT n.id, n.value FROM {keywords} n WHERE n.value = :fkv', array('fkv' => $word));
if($result->rowCount()) {
$usermatch = $result->fetchField(0);
$matches[$usermatch][] = $word;
}
}
我所得多維陣列將所述第一用戶而不是在第二個拾取oil
。例如,我的一句話將包含oil mud trucks
,但輸出會是這樣的:
array
(
[8] => array
(
[0] => oil
[1] => trucks
)
[9] => array
(
[0] => mud
)
)
應該有用戶9的條目會讀[1] => oil
但它不會顯示出來。我覺得我的foreach是在錯誤的位置,或者我需要重置循環,但我無所適從。我如何讓用戶9也顯示oil
?
您只是從查詢中獲取一行結果。你需要一個'while'循環來獲取結果的所有行。 – Barmar 2014-08-28 00:25:38