for ($i=1; $i<=26; $i++):
$_rows[] = array("Description"=>"Description_$i", "Caption"=>"Caption_$i", "Value"=>$i);
endfor;
foreach ($_rows as $row):
if (strlen($row['Caption']) > $max['Caption']) {$max['Caption'] = strlen($row['Caption']);}
if (strlen($row['Description']) > $max['Description']) {$max['Description'] = strlen($row['Description']);}
$rows[] = $row;
endforeach;
$contents = "<select style=\"font-family:monospace;\" name=\"selectbox\" multiple size=\"25\">\r\n";
foreach ($rows as $row):
$contents .= "<option value=\"{$row['Value']}\">";
$contents .= sprintf("%-'#".($max['Caption'] + 2)."s", $row['Caption']);
$contents .= sprintf("%-'#". ($max['Description'] + 2)."s", $row['Description']);
$contents .= "</option>\r\n";
endforeach;
$contents .= "</select>";
$contents = str_replace("#", " ", $contents);
echo "<div>Original code</br>$contents</div>";
echo "<div>Vragabond's suggestion<br/>";
$items = array("Caption", "Description");
$options = "";
foreach ($_rows as $row):
foreach ($items as $item):
if (strlen($row[$item]) > $max[$item]) {$max[$item] = strlen($row[$item]);}
endforeach;
endforeach;
foreach ($_rows as $row):
foreach ($items as $item):
for($i=strlen($row[$item]); $i<($max[$item] + 2); $i++):
$pad[$item] .= " ";
endfor;
endforeach;
$options .= '<option value="'.$row['Value'].'">'.$row['Caption'].$pad['Caption'].$row['Description'].$pad['Description'].'</option>';
$pad = array();
endforeach;
echo "<select size=\"25\" style=\"font-family:monospace\">$options</select></div>";
?>