Here's what I would do:
I would create an array with your technical_info sql array:
$sql[technical_info] = array(Model("SP250", "SP500", "SP800"), Power("(4 Ohms RMS)", "2x 125w", "2x 250w", "2x 400w"), Inputs("2x 6.35mm Jack");
Outputs("Speakon"));
Then, you can reference each one, and count what is in the array. If the count is less than 3, then you do the column span, if not, then you don't. If there is more than 3 columns (the power array), then you take the first value ((4Ohms RMS)) and you tack that to the "title" column to get what you want.
There are a number of ways to get the information output as you want, the only question is, how are you putting it into the $sql[] array? Perhaps there's a better way for you to put it in that will make outputting it easier.
Also, you could check to see what the next value would be (if you're constantly using the same "titles"):
<?php
// Get the $sql['technical_info'] array
$info = explode("=", $sql['technical_info']);
echo "<table><tr>";
for($i=0; $i<=count($info); $i++){
$n = $i+1;
if($n%4!=0 && ($info[$n] == "Model" || $info[$n] == "Power" || $info[$n] == "Inputs" || $info[$n] == "Outputs" || !isset($info[$n])){
$excess = " colspan=\"3\"";
}
else{
$excess = "";
}
echo "<td".$excess.">".$info[$i]."</td>";
if($i%4 == 0 || isset($excess)){
echo "</tr>";
}
}
echo "</table>";
Hope that helps.
~Brett