我有一个自动完成框的代码,我正在添加一个图像以供选择澄清但是要确保返回的title
是唯一的,但是,当我找到使该数组唯一的代码时,我添加了其他代码,使其在其他领域不是唯一的。有办法解决这个问题吗?
$query = "SELECT $title, imageURL FROM PRprodINFO2 WHERE ((prodcatID = '$cat_id')
AND ($title LIKE \"%" . $_GET["q"] . "%\")) group by $title LIMIT 8";
}
$result = mysql_query($query);
// set the array
$output_items = array();
while($row = mysql_fetch_array($result)) {
// clean after first non letter/number
$row[$title] = preg_replace('/[^\w\s].*$/', "", $row[$title]);
//trim spaces
$row[$title] = trim($row[$title]);
// add image src
$output_items[] = '<img src='.$row[imageURL].' style=max-width:50px;>'
.$row[$title];
} // while
// here i need just $row[title] to be unique,
// it is made non unique after regex strips off some characters
$output = array_unique($output_items);
print(implode("\n", $output));
mysql_close();
答案 0 :(得分:1)
我可能会对你的要求感到困惑。看起来你已经拥有了独特的标题,因为你在sql中按标题分组。但是,也许你有额外的非字母数字字符,你正在剥夺你的正则表达式,使一些独特的标题相同。
在这种情况下,请尝试:
,而不是像你一样建立你的$ output_items$output_items[$row['title']] = $row['imageURL'];
这将确保每个标题都是唯一的。您将拥有与该标题匹配的最后一行的imageURL。如果你想要匹配的第一个标题,那么只需检查isset
,然后再覆盖它:
if (!isset($output_items[$row['title']])) $output_items[$row['title']] = $row['imageURL'];
然后,在循环之外,构建输出字符串。
$output = '';
foreach ($output_items as $title => $image) {
$output .= '<img src='.$image.' ...>'.$title."\n";
}
echo $output;