我知道這裏有類似的問題,我已經看了一些帖子和答案,其中一些嘗試,但無論是我的知識有限PHP或我的案例的特點,我需要問這個。如何避免陣列(類別名稱)的幾個項目之一的重複
我建立一個字典(ID,英國,保加利亞,theme_id),想組根據theme_id搜索結果。我用我的查詢ORDER BY theme_id, id
但我最終與每個結果的顯示主題,而我想如下對其進行分類:
主題1個 - 結果1 - 結果2 主題2 - 結果3 - 結果4 .....
這裏是我的代碼的相關部分:
while($row = mysql_fetch_array($result)) {
//$id = $row['id'];
$english = $row['english'];
$bulgarian = $row['bulgarian'];
$theme_id = $row['theme_id'];
$theme_name = "theme_".$lang;
$theme_query= mysql_query("SELECT theme_id,".$theme_name." FROM ".DICTIONARY_THEMES." WHERE theme_id = ".$theme_id."");
$theme_row = mysql_fetch_array($theme_query);
$theme = $theme_row[$theme_name];
if($source == "english") {
foreach($keywords as $keyword) {
$english = preg_replace("|($keyword)|Ui", "<span style=\"color:#780223\">".$keyword."</span>", $english);
}
$print .= "<li class=\"results-row\">".$theme.": ".$english." = ".$bulgarian."</li>";
}
elseif($source == "bulgarian") {
foreach($keywords as $keyword) {
$bulgarian = preg_replace("|($keyword)|Ui", "<span style=\"color:#780223;\">".$keyword."</span>", $bulgarian);
}
$print .= "<li class=\"results-row\">".$theme.": ".$bulgarian." = ".$english."</li>";
}
}//end while
編輯:解決了,一個朋友幫助改善我的代碼。
while($row = mysql_fetch_array($result)) {
$english = $row['english'];
$bulgarian = $row['bulgarian'];
$theme_id = $row['theme_id'];
$theme_name = "theme_".$lang;
$theme_query= mysql_query("SELECT theme_id,".$theme_name." FROM ".DICTIONARY_THEMES." WHERE theme_id = ".$theme_id."");
$theme_row = mysql_fetch_array($theme_query);
$theme = $theme_row[$theme_name];
// add all results to an array
$results[] = array(
'english' => $english,
'bulgarian' => $bulgarian,
'theme' => $theme
);
}//end while
$theme = null;
foreach ($results as $result) {
if ($theme != $result['theme']) {
$theme = $result['theme'];
$print .= "<h3>" . $result['theme'] . "</h3>";
}
if ($source == "english") {
foreach ($keywords as $keyword) {
$result['english'] = preg_replace("|($keyword)|Ui", "<span style=\"color:#780223\">" . $keyword . "</span>", $result['english']);
}
$print .= "<li class=\"results-row\">" . $result['english'] . " = " . $result['bulgarian'] . "</li>";
} elseif ($source == "bulgarian") {
foreach ($keywords as $keyword) {
$result['bulgarian'] = preg_replace("|($keyword)|Ui", "<span style=\"color:#780223;\">" . $keyword . "</span>", $result['bulgarian']);
}
$print .= "<li class=\"results-row\">" . $result['bulgarian'] . " = " . $result['english'] . "</li>";
}
}
您應該考慮使用** ** PDO訪問數據庫。 ** mysql _ ***函數不再受支持,並且不能爲您提供**準備語句**的能力。 – AlexP
很難說,因爲你的問題很難理解,但我認爲你沒有發佈所有相關的代碼。你用什麼SQL查詢將結果放入'$ result'?您在您的問題中描述了一些問題,但很難在沒有看到該查詢的情況下確切知道發生了什麼。 – sgroves
這就是:\t \t'如果($ theme_id == 「0」){ \t \t \t的foreach($關鍵字爲$關鍵字){ \t \t \t \t $查詢= 「SELECT * FROM」 .DICTIONARY_TABLE「「。 。 \t \t \t \t「WHERE」。$ source。「LIKE'%」。mysql_escape_string($ keyword)。「%'」。 \t \t \t \t 「ORDER BY theme_id,ID」; \t \t \t} \t \t}' – cheeseus