我有以下 PHP 代码来显示我的标签云。似乎如果我没有至少两个相同的标签,我会收到一条警告消息,提示警告:除以零(如下所示)。
有人可以帮我修复这段代码吗?谢谢!
<?php
// define variables
$fontSizeUnit = "px";
$maxFontSize = 40;
$minFontSize = 10;
$tagsToDisplay = 100;
$tagDivider = " ";
// font size range
$fontSizeSpread = $maxFontSize - $minFontSize;
// create blank arrays
$tagArray = array();
$tempTagArray = array();
// DB: get all public tags
$result = mysqli_query($conn, "SELECT Tags FROM blog WHERE Tags != '' AND IsPublic = 1 ORDER BY RAND()")
or die($dataaccess_error);
if(mysqli_num_rows($result) > 0 )
{
// loop through results
while($row = mysqli_fetch_array($result))
{
// split the results
$tempStringArray = preg_split("/,/", $row['Tags']);
// loop through all items of this string array
for ($a = 0; $a < count($tempStringArray); $a++)
{
// convert to lowercase
$tempStringArray[$a] = strtolower($tempStringArray[$a]);
// check if it exists in tag array
if (empty($tagArray[$tempStringArray[$a]]))
{
// if it doesn't exist, create it with value 1
$tagArray[$tempStringArray[$a]] = 1;
}
else
{
// if it does exist, increase the value by 1
$tagArray[$tempStringArray[$a]] += 1;
}
}
}
// store to temporary array and sort descending
arsort($tagArray);
$numberOfTags = 0;
foreach ($tagArray as $key => $val)
{
$numberOfTags++;
if ($numberOfTags > $tagsToDisplay)
{
break;
}
$finalTagArray[$key] = $val;
}
ksort($finalTagArray);
$maxTagCount = max($finalTagArray);
$minTagCount = min($finalTagArray);
$tagCountSpread = $maxTagCount - $minTagCount; // <<== Problem here...
$unitsPerCount = $fontSizeSpread/$tagCountSpread;
// function to calculate the font size
function calcSize($thisTagCount) {
// import necessary global variables
global $minTagCount, $minFontSize, $fontSizeUnit, $unitsPerCount;
// calculate font size
$thisFontSize = $minFontSize+($unitsPerCount*($thisTagCount-$minTagCount));
// round font size and add units
$thisFontSize = round($thisFontSize) . $fontSizeUnit;
// return font size
return $thisFontSize;
}
// echo out the resulting tags
$b = 1;
foreach ($finalTagArray as $key => $val)
{
echo "<a href='snippets-by-tags.php?tag=".urlencode($key)."' style='font-size: ";
echo calcSize($val);
echo "'>" . htmlentities($key) . "</a>";
if($b != count($finalTagArray))
{
echo " " . $tagDivider . " ";
}
$b++;
}
}
else
{
echo '<a href="#">none found ...</a>';
}
?>